【问题标题】:32 bit standard C library on 64 bit machine64 位机器上的 32 位标准 C 库
【发布时间】:2012-06-17 05:32:33
【问题描述】:

我在 64 位机器上使用 ubuntu 12.04,我有这个简单的 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 位标准 C 库,因此链接器无法将我的代码链接到标准 C 库。

如何在我的 64 位机器上获得所需的 32 位标准 C?

【问题讨论】:

标签: c shared-libraries 32bit-64bit


【解决方案1】:

试试这个:

  apt-get install ia32-libs 

另外,您应该使用 -m32 编译/链接:

gcc -Wall -pedantic -m32 ...

【讨论】:

  • 感谢您指出正确的方向,sudo apt-get install libc6-dev-i386
  • @Rustam Issabekov - 很酷。感谢您为您发回完整的解决方案!
  • 我应该在装有 yum 的机器上安装什么?它说没有任何东西叫ia32-libs
  • 对于 Centos/Fedora/等,没有直接等效的 ia32-libs。您需要安装适当的 *.686 软件包。示例:yum install compat-libstdc++-296.i686。以下是更多详细信息:ask.fedoraproject.org/question/9556/…
  • 在此之后我得到了一个链接器错误,并且还必须sudo apt-get install g++-4.8-multilib
猜你喜欢
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多