【问题标题】:-m32 option doesn't work with gcc but works with g++-m32 选项不适用于 gcc,但适用于 g++
【发布时间】:2014-01-14 00:06:08
【问题描述】:

我试图在 x86_64 ubuntu 12.04 机器上为 32 位目标编译应用程序。 我使用

安装了所需的软件包
sudo apt-get install gcc-multilib g++-multilib libc6-i386 libc6-dev-i386

第一个命令生成 32 位版本。但是,第二个命令出错了

1. g++ -m32 hello.c 

2. gcc -m32 hello.c
skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/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.8/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s

谁能向我解释为什么 gcc 无法工作。我错过了一些图书馆吗?

谢谢!



【问题讨论】:

    标签: c++ linux compilation


    【解决方案1】:

    我将我的 g++ 升级到 4.8 并且 g++ -m32 也停止了工作。安装 g++-4.8-multilib 使 -m32 选项适用于 gcc 和 g++。

    【讨论】:

      【解决方案2】:

      我认为你需要这个 Ubuntu 软件包:

      sudo apt-get install ia32-libs
      

      同时确认您将gcc multilibgcc -v 一起使用。如果没有相应设置路径或重新安装gcc-multilib

      【讨论】:

      • 我确实安装了它。很抱歉之前没有提及。
      • @Sarora,你能试试:gcc -m32 -L/usr/lib32 -o hello hello.c
      • 是的。我以前试过。它不起作用。我在 /usr/lib32 中有 crt1.o 和 libgcc_s.so.1。我想知道它是否在寻找其他东西。
      • 我认为你有 $PATH 问题,你没有使用 gcc multilib,你能验证 gcc -v 吗?根据 gcc multilib 二进制文件设置路径。
      • 安装 g++-4.8-multilib 帮助我解决了这个问题。谢谢!
      猜你喜欢
      • 2017-11-13
      • 1970-01-01
      • 2021-08-12
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      相关资源
      最近更新 更多