如何在 Linux 上构建同时构建 32 位和 64 位代码的 gcc 编译器
How to build a gcc compiler on Linux that builds both 32-bit and 64-bit code
我按照以下 URL 中的说明为 Linux 构建了一个 gcc 编译器:
https://solarianprogrammer.com/2016/10/07/building-gcc-ubuntu-linux/
生成的编译器可以毫无问题地构建 64 位代码。
但是,当我尝试构建 32 位代码(通过指定 -m32 编译器选项)时,出现错误。
这是我得到的错误:
- 找不到 -lstdc++
- 找不到-lgcc_s
- 搜索 foor -lgcc
时跳过不兼容 libgcc.a
- 找不到 -lgcc
显然,当我构建编译器时,我做错了什么 - 谁能告诉我我做错了什么以及如何重建编译器以构建 32 位和 64 位代码。
您至少需要在配置命令行上使用--with-multilib-list=m32,m64
进行配置。1您绝对需要而不是配置--disable-multilib
。您可能还需要构建和安装其他库的其他版本。
一般来说,搜索 'multilib' 的文档会向您展示所有讨论构建或使用具有多个目标 ABI 的 gcc 的地方。
1至少在某些版本的 gcc 上这是默认设置。如果您想对此进行试验,也可以添加 mx32
。
我按照以下 URL 中的说明为 Linux 构建了一个 gcc 编译器:
https://solarianprogrammer.com/2016/10/07/building-gcc-ubuntu-linux/
生成的编译器可以毫无问题地构建 64 位代码。
但是,当我尝试构建 32 位代码(通过指定 -m32 编译器选项)时,出现错误。
这是我得到的错误:
- 找不到 -lstdc++
- 找不到-lgcc_s
- 搜索 foor -lgcc 时跳过不兼容 libgcc.a
- 找不到 -lgcc
显然,当我构建编译器时,我做错了什么 - 谁能告诉我我做错了什么以及如何重建编译器以构建 32 位和 64 位代码。
您至少需要在配置命令行上使用--with-multilib-list=m32,m64
进行配置。1您绝对需要而不是配置--disable-multilib
。您可能还需要构建和安装其他库的其他版本。
一般来说,搜索 'multilib' 的文档会向您展示所有讨论构建或使用具有多个目标 ABI 的 gcc 的地方。
1至少在某些版本的 gcc 上这是默认设置。如果您想对此进行试验,也可以添加 mx32
。