如何在64位Linux机器上编译32位二进制文​​件而不触及CFLAGS环境变量

Lot*_*har 11 linux 64-bit gcc freebsd compilation

解决方案

如何使用gcc/cmake在64位Linux机器上编译32位二进制文​​件

是不可能的,因为我使用第三方软件和已经使用CFLAGS变量的其他东西.我的老板说,不允许修补他们的makefile.

所以我必须找到另一种方法来强制执行它.也许有一些神奇的符号链接将调用gcc重定向到32位版本的编译器(希望不动态检测默认目标).

jva*_*sak 15

您不能在您的环境中更改CFLAGS,但有任何理由您无法暂时覆盖它以进行构建吗?

对于基于autotool的软件包,我首先尝试:

CFLAGS="-m32" ./configure [opts]
make
make install
Run Code Online (Sandbox Code Playgroud)

一个编写良好的configure.ac文件应该尊重你的CFLAGS变量并附加到它,而不需要你修改包源.

更新

那么,假设你不能重新定义你的CC变量,我会玩一些路径技巧.使用以下(未经测试)${HOME}/gcc32调用shell脚本gcc:

#!/bin/sh
/usr/bin/gcc -m32 "$@"
Run Code Online (Sandbox Code Playgroud)

当您想要构建32位时,请将其添加到您的路径中:

export PATH=${HOME}/gcc32:${PATH}
Run Code Online (Sandbox Code Playgroud)

明显的修改将支持g++,icc或任何其他编译器.