2016-09-14 219 views
-1

我使用的是xubuntu 16.04 amd64,並使用D語言。我曾經在32位機器上使用DMD i386(ubuntu 14.04),但是現在由於某種原因,我不能(或不想)在我的系統上安裝DMD_i386,所以我安裝了一個用於amd64的機器。我所有的項目都是在32位機器上編寫的,我使用的是int類型,而不是使用64位版本的long類型。現在每當我嘗試編譯我之前編寫的東西時,看起來像這樣,會給出錯誤;在64位DMD上編譯32位

void someFunction(){ 
    string[] someArray; 
    uint ln = someArray.length;//This compiled perfectly on 32 bit, but now it says that someArray.length is ulong, and ln is uint. 
} 

我知道,改變LN的類型ULONG將FX,但我wan't編譯此爲32位,而不是64位,而在32位,在long/ulong類型不可用,因爲它使用64位。我試過使用-m32開關使DMD產生32位輸出。上面提到的錯誤是由這個固定的,但接頭(LD)錯誤顯示出來:

/usr/bin/ld: cannot find crt1.o: No such file or directory 
/usr/bin/ld: cannot find crti.o: No such file or directory 
/usr/bin/ld: cannot find -lpthread 
/usr/bin/ld: cannot find -lm 
/usr/bin/ld: cannot find -lrt 
/usr/bin/ld: cannot find -ldl 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/5/libgcc.a when searching for -lgcc 
/usr/bin/ld: cannot find -lgcc 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/5/libgcc_s.so when searching for -lgcc_s 
/usr/bin/ld: cannot find -lgcc_s 
/usr/bin/ld: cannot find -lc 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/5/libgcc.a when searching for -lgcc 
/usr/bin/ld: cannot find -lgcc 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/5/libgcc_s.so when searching for -lgcc_s 
/usr/bin/ld: cannot find -lgcc_s 
/usr/bin/ld: cannot find crtn.o: No such file or directory 
collect2: error: ld returned 1 exit status 
--- errorlevel 1 

我怎麼DMD上產生64位DMD 32位輸出?

+1

'array.length'返回一個'size_t',它是32位系統的'uint'和64位系統的'ulong'。 ulong在i86(「32位」)系統上絕對可用。 –

回答

3

自己解決了這個問題。事實證明,我錯過了鏈接器需要的一些軟件包。這解決了這個問題:

sudo apt install gcc-multilib 
相關問題