linux - 如何在 Linux 上构建同时构建 32 位和 64 位代码的 gcc 编译器

标签 linux gcc ubuntu-16.04

我按照以下 URL 中的说明为 Linux 构建了一个 gcc 编译器:

https://solarianprogrammer.com/2016/10/07/building-gcc-ubuntu-linux/

生成的编译器可以毫无问题地构建 64 位代码。

但是,当我尝试构建 32 位代码(通过指定 -m32 编译器选项)时,出现错误。

这是我得到的错误:

  1. 找不到-lstdc++
  2. 找不到-lgcc_s
  3. 搜索 foor -lgcc 时跳过不兼容的 libgcc.a
  4. 找不到-lgcc

显然,当我构建编译器时,我做错了什么 - 谁能告诉我我做错了什么以及如何重建编译器以构建 32 位和 64 位代码。

最佳答案

您至少需要在配置命令行上使用--with-multilib-list=m32,m64 进行配置。1您绝对需要 使用 --disable-multilib 配置。您可能还需要构建和安装其他库的其他版本。

一般来说,在文档中搜索“multilib”会向您展示它讨论构建或使用具有多个目标 ABI 的 gcc 的所有地方。


1至少在某些版本的 gcc 上这是默认值。如果您想试验一下,也可以添加 mx32

关于linux - 如何在 Linux 上构建同时构建 32 位和 64 位代码的 gcc 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226778/

相关文章:

python - 未绑定(bind)方法 mainloop() 必须以 Tk 实例作为第一个参数调用(取而代之的是什么)

amazon-web-services - 如何将 AWS EC2 ubuntu 实例加入到简单目录

linux - 将 IP 数据包从一个 IP 地址路由到另一个 IP 地址

c++ - gcc 和 clang STL 实现是否违反有关分配器的规则?

gcc - “INTMAX_MAX”未在此范围内声明

linux - 如何将 Yocto 生成的 U-boot 二进制文件加载到 t1042d4rdb 板

linux - 如何使用 ffmpeg 重叠和合并多个音频文件?

java - 记录测试驱动开发的网络流量

linux - 如何在 Linux 上使用核心转储和 gdb 使用一个近似虚拟内存 (VSZ)?

c - gcc,内联汇编 - pushad/popad 丢失?