On Monday, 26 September 2016 at 23:32:05 UTC, Walter Bright wrote:
Linking C libraries and object code into D programs has always
worked easily in D. The other way around, not so well.
[snip]
How much of an issue is this with D? Is it something we need to
address?
We've been toying with this in setting up LDC's build such that
it works on different platforms. Wait, "toying" implies "fun". It
was anything but.
At first, we used the D compiler to do the final linking, but it
resulted in troubles when special linker flags are needed.
We've now moved to using the system linker separately to do the
linking.
https://github.com/ldc-developers/ldc/pull/1594
For this, we use `-v` to figure out what the system linker is and
what linker flags are passed by the D compiler (link with phobos,
druntime, etc.). But it needs "parsing" of `-v` output, quite
annoying.
See
https://github.com/ldc-developers/ldc/blob/master/cmake/Modules/ExtractDMDSystemLinker.cmake
The idea to add a cmdline flag `-ldflags` that would just output
the linking flags, did not get a response.
https://forum.dlang.org/post/[email protected]
I think it will save people a lot of time and frustration.
(possible improvements can be made such that the output of
`-ldflags` also includes extra link flags when special compiler
flags are passed, such as `-fprofile-instr-generate`.)
-Johan