我有一个需要在Mac OSX 10.9.2上重新编译的旧工具,但该工具是用32位假设编写的(不是我),如果没有重写,纯64位编译就无法工作。
是否可以使用Macports gcc(4.3)和-m32标志? 32位二进制文件是否会在Mac OSX 10.9.2的64位内核上运行?
我尝试使用带有简单helloworld.c文件的选项并获取错误,但未在网上找到解释:
%> gcc-mp-4.3 -m32 hello.c
ld: warning: ld: warning: ignoring file /opt/local/lib/gcc43/libgcc_s.10.5.dylib, missing required architecture i386 in file /opt/local/lib/gcc43/libgcc_s.10.5.dylib (1 slices)
ignoring file /opt/local/lib/gcc43/gcc/x86_64-apple-darwin13/4.3.6/libgcc.a, file was built for archive which is not the architecture being linked (i386): /opt/local/lib/gcc43/gcc/x86_64-apple-darwin13/4.3.6/libgcc.a
注意:原生Xcode gcc与源代码不兼容,因为Xcode gcc是基于clang的。
答案 0 :(得分:4)
http://trac.macports.org/ticket/27925页面描述了如何安装32位和64位(也称为通用)支持的编译器。
添加" universal_archs x86_64 i386"到macports.conf并用" sudo端口升级更新已安装的端口--enforce-variants gcc43 + universal"它将重新安装编译器并在x64库中另外构建i386库。
答案 1 :(得分:0)
安装GCC的通用端口。