我一直在32位机器上编程,直到最近,我升级到了64位。我在xubuntu 16.04(amd64)上使用最新版本的DMD(amd64)。DMD2无法在Linux上编译共享库,amd64
在升级之前,我可以使用dmd -shared 'FILES'
轻松编译共享库,但是现在它会出现错误。 我有一个名为QD文件:
module q;
export extern(C) int abcd(){
return 4;
}
,现在当我做dmd -shared 'q.d'
,我得到这个:
[email protected]:~/Desktop/temp$ dmd -shared q.d
/usr/bin/ld: q.o: relocation R_X86_64_32 against `__dmd_personality_v0' can not be used when making a shared object; recompile with -fPIC
q.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
--- errorlevel 1
当我做dmd -shared -fPIC q.d
:
[email protected]:~/Desktop/temp$ dmd -shared -fPIC q.d
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libphobos2.a(exception_224_3b4.o): relocation R_X86_64_32 against `__dmd_personality_v0' can not be used when making a shared object; recompile with -fPIC
/usr/lib/x86_64-linux-gnu/libphobos2.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
--- errorlevel 1
我怎样才能得到它来编译?
编辑:图书馆编译罚款,如果我使用-m32标志。
这可能是因为缓存的内容,您是否尝试过'--force'?另外,我还记得安装了'hardening-wrapper'的问题。删除它为我固定。 – weltensturm
@weltensturm我尝试过'dmd -shared --force q.d',但它说'--force'是一个无法识别的开关。我没有安装硬化包装。 – Nafees