On Sunday, 20 May 2012 at 13:53:21 UTC, Mike Wey wrote:
On my system it looks like the order of the commands passed on to ld differ depending on if -Xlinker is used. gcc passes some default paths to the linker like: -L/lib/ and -L/usr/lib/, now commands passed on to the linker with -Xlinker are added after these paths, while if you don't use -Xlinker the path is passed before the default paths.

So if your global phobos lib is installed in /lib or /usr/lib it will be picked up by the linker if it searches those directories before the one that contains the local one. The search order for ld depends on the order in which they appear on the commandline.

Thanks, that makes sense.

I found in dmd's link.c that special treatment is given to "-l" by eliding -Xlinker. If I expand this logic to include -L it takes care of my issue. I think it's the right thing given the interaction between gcc and the linker-- it's not unlikely that D libraries could appear in the default gcc library path and we want paths supplied explicitly to dmd to take precedence. I'll submit a patch.

If I can get that accepted I'll try to follow up and have update.sh make a coherent dmd.conf.

Reply via email to