德朗:重新定位R_X86_64_32以对抗`.rodata';制作共享对象时不能使用;用-fPIC重新编译
我试图使用dmd编译一个简单的hello world,但我得到以下输出:德朗:重新定位R_X86_64_32以对抗`.rodata';制作共享对象时不能使用;用-fPIC重新编译,d,D,我试图使用dmd编译一个简单的hello world,但我得到以下输出: dmd hi /usr/bin/ld: hi.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC hi.o: error adding symbols: Bad value collect2: error: ld returned 1 exit status
dmd hi
/usr/bin/ld: hi.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
hi.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
--- errorlevel 1
所以我尝试使用-fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_a_66e.o): relocation R_X86_64_32 against `_D12TypeInfo_Aya6__initZ' can not be used when making a shared object; recompile with -fPIC
/usr/lib/libphobos2.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
--- errorlevel 1
大约一个月前,这是一个不存在的问题
系统:Arch Linux 64位
可能是什么问题
dmd -m32 hi
/usr/bin/ld: skipping incompatible /usr/lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /lib/../lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /lib/../lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/../lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/../lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/libphobos2.a when searching for -l:libphobos2.a
/usr/bin/ld: cannot find -l:libphobos2.a
/usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib/libpthread.a when searching for -lpthread
collect2: error: ld returned 1 exit status
--- errorlevel 1
发生此错误的原因是因为存在硬化包装。删除此软件包解决了问题。尝试使用
dmd-m32 hi
和dmd-m64 hi
两种方法,看看它们是否有不同的功能。