强制 gcc 在 64 位平台上编译 32 位程序
- 2024-10-29 08:34:00
- admin 原创
- 48
问题描述:
我有一个专有程序,正在尝试在 64 位系统上使用。
当我启动该设置时,它运行正常,但在它尝试自我更新并编译一些模块后,却无法加载它们。
我怀疑这是因为它使用 gcc,并且 gcc 尝试为 64 位系统编译它们,因此该程序无法使用这些模块。
有什么方法(一些环境变量或类似的东西)可以强制 gcc 为 32 位平台执行所有操作。32 位 chroot 可以工作吗?
解决方案 1:
您需要让 GCC 使用该-m32
标志。
您可以尝试为您的程序编写一个简单的 shell 脚本$PATH
并将其命名为 gcc (确保您不会覆盖原始的 gcc,并确保新脚本位于更早的位置$PATH
,并且它使用了 GCC 的完整路径)。
我认为你需要的代码就像/bin/gcc -m32 $*
取决于你的shell(其中$*
包含所有参数,尽管它可能是别的东西 - 非常重要!)
解决方案 2:
您可能会通过应用 Alan Pearce 的方法获得 32 位二进制文件,但也可能会收到以下错误:
fatal error: bits/predefs.h: No such file or directory
如果是这种情况,并且你有 apt-get,只需安装 gcc-multilib
sudo apt-get install gcc-multilib
解决方案 3:
gcc
对于直接使用/编译的任何代码g++
,您都需要-m32
向编译命令行添加选项,只需在 中编辑CFLAGS
和CXXFLAGS
变量LDFLAGS
即可Makefile
。
对于您可能使用的任何第三方代码,您必须确保在构建时将其配置为交叉编译。运行./configure --help
并查看哪些选项可用。在大多数情况下,您可以将CFLAGS
、CXXFLAGS
和LDFLAGS
变量提供给配置脚本。您可能还需要将--build
和添加--host
到配置脚本中,这样您最终会得到类似
./configure CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu
如果编译失败,这可能意味着你需要在 64 位机器上安装一些 32 位开发包
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD