gdc: Fails to link any code using std.net.curl
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
dub (Debian) |
Fix Released
|
Unknown
|
|||
dub (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
gcc-5 (Ubuntu) |
Won't Fix
|
High
|
Unassigned |
Bug Description
Hi!
The GDC D compiler in Ubuntu is currently unable to link anything using std.net.curl, likely due to an ordering issue in the linker command-line, since Ubuntus libcurl is compiled with --as-needed
To reproduce, take the following simple program:
test.d
```
import std.stdio;
import std.net.curl;
void main(string[] args)
{
auto data = get ("ubuntu.com");
writeln (data);
}
```
And compile with `gdc -lcurl -otest test.d`
Linking will file with lots of messages like
```
/usr/lib/
/build/
```
A possible solution to this problem would be to link all D programs against libcurl, as has apparently been done in LDC: https:/
Maybe having GDC fix up the linker command line would also work.
Backporting the (massive) patch for Phobos for dynamically loading libcurl would also be an option, but I guess it wouldn't be an easy solution.
This being broken in Ubuntu means that Ubuntu can't compile several important tools, like the dub D package manager, which compiles fine in Debian ( https:/
Since std.net is a part of the standard library, and it's kind of expected from a standard library to function, I've set the priority of this bug to "High".
Thanks in advance for the help! I am also thinking about reporting this bug upstream, but since compiling in other distros (e.g. Debian) works, I don't know how quickly one could expect people there to take care of this issue.
affects: | gcc-defaults (Ubuntu) → gcc-5 (Ubuntu) |
summary: |
- Fails to link any code using std.net.curl + gdc: Fails to link any code using std.net.curl |
Changed in gcc-5 (Ubuntu): | |
status: | New → Won't Fix |
Changed in dub (Debian): | |
status: | Unknown → Fix Released |
you should link using:
gdc -otest test.d -Wl,--- pus-state, -no-as- needed -lcurl -Wl,--pop-state