-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位輸出?
'array.length'返回一個'size_t',它是32位系統的'uint'和64位系統的'ulong'。 ulong在i86(「32位」)系統上絕對可用。 –