1

我正在运行通过 MacPorts 获得的 GCC 4.7.2 的 Mac OS X 10.8.2 工作站上构建。x86_64我可以使用此设置构建 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 位支持?

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

  • 一旦安装了这些库,我当前的 gcc 安装如何“知道”这些库将在哪里找到?

  • 我可以通过 Xcode 4.5.2 添加什么吗?我已经在命令行上执行此操作,但我只能将“命令行工具”和 iOS 模拟器视为“首选项”小程序中的下载选项。

4

2 回答 2

2

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

于 2013-01-11T22:13:27.317 回答
1

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

于 2013-01-13T01:35:53.360 回答