我在运行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模拟器作为下载选项。
答案 0 :(得分:2)
删除GCC的MacPorts安装并通过XCode安装“命令行工具”包。完成此操作后,gcc -arch i386
将按预期工作。
答案 1 :(得分:0)
使用+universal
选项重建GCC 4.7.2的MacPorts安装,支持编译32-(i386
)和64位(x64_86
)二进制文件。