DMD Fails with fPIC error

Reuben via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jun 14 09:37:59 PDT 2014


On Saturday, 14 June 2014 at 13:05:52 UTC, Mike Wey wrote:
> On 06/14/2014 02:01 PM, Reuben wrote:
>> On Saturday, 14 June 2014 at 10:45:25 UTC, Mike Wey wrote:
>>> On 06/14/2014 03:58 AM, Reuben wrote:
>>>
>>> Depending on the desired behavior you'll need to remove the 
>>> -shared
>>> flag from the configuration or add -defaultlib=:libphobos2.so
>>
>> dmd.conf contains the default settings. I haven't specified 
>> -shared
>> anywhere. The only thing I can think of is that if -fPIC is 
>> required,
>> DMD might be implying it somehow.
>
> Try running "dmd test.d -v" the last line in the outpus from 
> dmd should show hows it's invoking gcc for the linking step.
> Posting that here might give us some clue of what dmd is doing.

> dmd test.d -v
gcc test.o -o test -m64 -L/opt/dmd-2.065/lib64 -Xlinker -rpath 
-Xlinker /opt/dmd-2.065/lib64 -Xlinker --export-dynamic 
-l:libphobos2.a -lpthread -lm -lrt

> dmd -defaultlib=:libphobos2.so -fPIC test.d -v
gcc test.o -o test -m64 -L/opt/dmd-2.065/lib64 -Xlinker -rpath 
-Xlinker /opt/dmd-2.065/lib64 -Xlinker --export-dynamic 
-l:libphobos2.so -lpthread -lm -lrt

It looks like the only difference is which version of Phobos we 
link. I think the reason for this might be that since my version 
of gcc is hardened, it uses -fPIE by default for linking. 
(http://wiki.gentoo.org/wiki/Hardened/Toolchain#Automatic_generation_of_Position_Independent_Executables_.28PIEs.29)


More information about the Digitalmars-d-learn mailing list