我一直在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