我有一个旧工具需要在 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
Run Code Online (Sandbox Code Playgroud)
注意:原生 Xcode gcc 与源代码不兼容,因为 Xcode gcc 是基于 clang 的。
http://trac.macports.org/ticket/27925 上的页面描述了如何安装具有 32 位和 64 位(也称为通用)支持的编译器。
将“universal_archs x86_64 i386”添加到 macports.conf 并使用“sudo port upgrade --enforce-variants gcc43 +universal”更新已安装的端口,它将重新安装编译器并在额外的 x64 库中构建 i386 库。
| 归档时间: |
|
| 查看次数: |
652 次 |
| 最近记录: |