gpt4 book ai didi

linux - 在 64 位 DMD 上编译 32 位

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:25 25 4
gpt4 key购买 nike

我使用的是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 会解决它,但我不想将其编译为 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 位输出?

最佳答案

我自己解决了这个问题。事实证明,我缺少链接器所需的一些包。这解决了问题:

sudo apt install gcc-multilib

关于linux - 在 64 位 DMD 上编译 32 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39485264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com