在x86_64(64位)Mountain Lion上构建i386(32位)应用程序

时间:2013-01-11 21:55:12

标签: xcode macos gcc osx-mountain-lion

我在运行GCC 4.7.2的Mac OS X 10.8.2工作站上构建,通过MacPorts获得。我可以使用此设置构建64位(x86_64)应用程序。

我试图通过将-arch i386添加到编译标志来从源构建32位二进制文​​件。我想在10.5和10.6上添加对32位客户端的支持。

我收到以下错误消息(以及其他)似乎与缺少32位库有关:

ld: warning: ignoring file /opt/local/lib/gcc47/libgcc_ext.10.5.dylib, missing required architecture i386 in file /opt/local/lib/gcc47/libgcc_ext.10.5.dylib (1 slices)
ld: warning: ignoring file /opt/local/lib/gcc47/gcc/x86_64-apple-darwin12/4.7.2/libgcc.a, file was built for archive which is not the architecture being linked (i386): /opt/local/lib/gcc47/gcc/x86_64-apple-darwin12/4.7.2/libgcc.a

我的问题是:

  • 我应该使用不同的标志,而不是-arch i386吗?

  • 或者,我在哪里可以获得(或如何编译)我需要安装的i386库,以获得32位支持?

(我可以从下载GCC 4.7.2源代码编译i386架构库吗?我应该在./configure语句中添加一组特定的选项来启用它吗?)

  • 安装完这些库之后,我当前的gcc安装如何“知道”这些库的位置?

  • 我可以通过Xcode 4.5.2添加任何内容吗?我已经在命令行中执行此操作,但我只能在“首选项”小程序中看到“命令行工具”和iOS模拟器作为下载选项。

2 个答案:

答案 0 :(得分:2)

删除GCC的MacPorts安装并通过XCode安装“命令行工具”包。完成此操作后,gcc -arch i386将按预期工作。

答案 1 :(得分:0)

使用+universal选项重建GCC 4.7.2的MacPorts安装,支持编译32-(i386)和64位(x64_86)二进制文件。