我使用的是64位系统但需要一组32位二进制文件。我必须将哪些选项传递给configure脚本才能生成32位/ x86 makefile?
答案 0 :(得分:65)
答案 1 :(得分:43)
杰克的回答不完整。
您需要编译器/ libc支持32位编译。在像Ubuntu这样的发行版中,您需要做的是安装包gcc-multilib
和/或g++-multilib
:
sudo apt-get install gcc-multilib g++-multilib
然后你可以像你说的那样调用configure,指定一个32位主机并传递32位编译标志:
./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
如果您没有安装multilib,则在传递configure: error: C compiler cannot create executables
标记时会出现-m32
之类的错误。
答案 2 :(得分:7)
我通过设置自定义编译器取得了更好的成功。这样,所有配置测试,甚至是使用自定义CFLAGS的配置测试都能正常工作:
./configure CC="gcc -m32" CXX="g++ -m32"
当然,您仍然需要应用程序使用的所有库的32位版本,因此有关缺少库的任何错误都指的是32位版本。
答案 3 :(得分:3)
假设gcc / g ++:
CPPFLAGS=-m32 ./configure ...
答案 4 :(得分:1)
上述内容的另一种方法是(如果有的话)使用专用的x86编译器。然后配置行就像这样(我在模式“< toolname> -x86”之后命名为x86-tools):
CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure