2016-09-14 218 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