我使用Ubuntu 12.04 64位机器上,我有这个简单的C代码:32位标准C库
int b = 20;
int c = 10;
int main(int argc, char **argv) {
c = 50;
}
我试图通过编写它像使它与任何IA32的机器兼容这样的:
unix> gcc -m32 code.c
,并得到这些错误:
/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: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/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/4.6/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/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: ld returned 1 exit status
据我所知,这种情况正在发生,因为我失去了32位ST andard C库,所以链接器无法将我的代码与标准C库链接。
如何在64位机器上获得所需的32位标准C?与-m32
apt-get install ia32-libs
此外,你应该编译/链接:
可能重复[找不到crtn.o,在64位系统连接的32位代码] (http://stackoverflow.com/questions/9807581/cannot-find-crtn-o-linking-32-bit-code-on-64-bit-system) – user2284570