【问题标题】:Building i386 (32-bit) apps on x86_64 (64-bit) Mountain Lion在 x86_64(64 位)Mountain Lion 上构建 i386(32 位)应用程序
【发布时间】:2013-01-11 21:55:12
【问题描述】:

我正在运行通过 MacPorts 获得的 GCC 4.7.2 的 Mac OS X 10.8.2 工作站上构建。我可以使用此设置构建 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 添加什么吗?我已经在命令行上执行此操作,但我只能在 Preferences 小程序中将“命令行工具”和 iOS 模拟器视为下载选项。

【问题讨论】:

标签: xcode macos gcc osx-mountain-lion


【解决方案1】:

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

【讨论】:

  • 事实证明 Clang/LLVM 的 C++ 支持不完整,所以如果我尝试使用这些工具,我的代码库就会中断。看起来 Xcode 已经出局了。有没有办法引导 GCC 4.7.2 添加i386 支持?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 2012-11-18
    • 2012-01-15
    • 1970-01-01
    • 2018-04-06
    • 2016-12-02
    • 2017-09-19
    • 2015-04-19
    相关资源
    最近更新 更多