我正在使用xubuntu 16.04 amd64,并使用D语言。我以前在32位机器(ubuntu 14.04)上使用DMD i386,但现在,由于某种原因,我不能(或者不想)在我的系统上安装DMD_i386,所以我安装了一个对于amd64。我的所有项目都是在32位计算机上编写的,我使用int
类型而不是64位可用的long
类型。现在每当我尝试编译我之前写的东西时,看起来像这样,给出错误;
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它,但是我不想编译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位输出?
答案 0 :(得分:3)
自己解决了这个问题。事实证明,我错过了链接器所需的一些软件包。这解决了这个问题:
sudo apt install gcc-multilib