如何使用 gcc/cmake 在 64 位 Linux 机器上编译 32 位二进制文件
- 2024-10-11 08:36:00
- admin 原创
- 79
问题描述:
是否可以在 64 位系统上编译 32 位项目?可能可以,但我该怎么做?cmake
`gcc`
当我以“无知”的方式尝试它时,没有设置任何参数/标志/等,只是设置LD_LIBRARY_PATH
查找其中的链接库~/tools/lib
似乎忽略了它并且只查看名为lib64 的子目录。
解决方案 1:
export CFLAGS=-m32
解决方案 2:
$ gcc 测试.c -o 测试c
$ 文件 testc
testc:ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),动态链接(使用共享库),适用于 GNU/Linux 2.6.9,未剥离
$ ldd testc
linux-vdso.so.1 => (0x00007fff227ff000)
libc.so.6 => /lib64/libc.so.6 (0x000000391f000000)
/lib64/ld-linux-x86-64.so.2 (0x000000391ec00000)
$ gcc -m32 测试.c -o 测试c
$ 文件 testc
testc:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),适用于 GNU/Linux 2.6.9,未剥离
$ ldd testc
linux-gate.so.1 => (0x009aa000)
libc.so.6 => /lib/libc.so.6 (0x00780000)
/lib/ld-linux.so.2 (0x0075b000)
简而言之:使用该-m32
标志来编译 32 位二进制文件。
另外,请确保安装了所有必需库的 32 位版本(就我而言,在 Fedora 上我需要的只是 glibc-devel.i386)
解决方案 3:
在 CMake 的更高版本中,在每个目标上执行此操作的一种方法是:
set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
我不知道有没有什么办法可以在全球范围内做到这一点。
解决方案 4:
对于任何复杂的应用程序,我建议使用lxc 容器。lxc 容器是“加强版 chroot 与成熟虚拟机之间的某种东西”。
例如,以下是在 Ubuntu Trusty 系统上使用 lxc 构建 32 位 wine 的方法:
sudo apt-get install lxc lxc-templates
sudo lxc-create -t ubuntu -n my32bitbox -- --bindhome $LOGNAME -a i386 --release trusty
sudo lxc-start -n my32bitbox
# login as yourself
sudo sh -c "sed s/deb/deb-src/ /etc/apt/sources.list >> /etc/apt/sources.list"
sudo apt-get install devscripts
sudo apt-get build-dep wine1.7
apt-get source wine1.7
cd wine1.7-*
debuild -eDEB_BUILD_OPTIONS="parallel=8" -i -us -uc -b
shutdown -h now # to exit the container
这是有关如何使用 lxc 在 64 位主机上构建 32 位 wine 的wiki 页面。
解决方案 5:
对于 C++,你可以执行以下操作:
export CXXFLAGS=-m32
这与 cmake 一起工作。
解决方案 6:
一种方法是设置 chroot 环境。Debian 有许多工具可用于此目的,例如debootstrap
解决方案 7:
别忘了安装 32 位库(C 或 C++)
sudo apt install gcc-multilib
sudo apt install g++-multilib
然后使用-m32
标志
gcc -o a.out -m32 my_program.c
或者
g++ -o a.out -m32 my_program.cpp
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD