【问题标题】:How to build C++ for OSX 10.4, 10.5 and 10.6 in Xcode with dynamic libraries如何使用动态库在 Xcode 中为 OSX 10.4、10.5 和 10.6 构建 C++
【发布时间】:2010-02-06 13:58:08
【问题描述】:

我正在 Xcode 中构建一个 C++ 命令行工具。该项目包含用于 curl、boost 和 log4cpp 的 dylib。

理想情况下,我想构建一个支持 10.4 到 10.6 的 i386 通用二进制文件。

我似乎无法编译 Xcode,当我以 10.4 为目标时,它说没有这样的文件或目录。

当我以 10.6 x_64 为目标时,它可以构建,但 10.5 i386 抱怨我的 dylib 不是 10.5 的正确架构?

我应该使用什么版本的 GCC?

另外,当我使用 PackageMaker 创建安装包时,安装程​​序应该将工具所需的 dylib 放在哪里?

提前非常感谢, 托比。

【问题讨论】:

  • 好的,所以我需要针对 10.4 sdk 构建库,但似乎说起来容易做起来难?我设置: export MACOSX_DEPLOYMENT_TARGET=10.4 export CC="gcc-4.0" export LDFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" export CFLAGS="-Os -arch i386 -isysroot /Developer/SDKs /MacOSX10.4u.sdk" 在运行之前 ./configure 但他们都不断抛出错误!我错过了什么?

标签: c++ xcode macos universal-binary


【解决方案1】:

第 3 方库是为 10.6 x_64 构建的,我需要为 10.4 重新构建它们。

我通过下载 xcode 3.2 并在安装过程中选择“安装 10.4 支持”来安装 10.4u sdk。

在针对 10.4u sdk 使用 GCC 4.0 重建每个库后,我的项目编译成功。

我还使用了静态库,所以我不需要将它们包含在安装程序中。

【讨论】:

    【解决方案2】:

    您应该能够只选择 10.4 SDK 和 gcc 4.0 并构建一个可在 10.4 及更高版本上运行的可执行文件。

    【讨论】:

    • 这正是我的想法,我选择了 10.4 作为 Base SDK OSX 部署目标,将 GCC 4.0 设置为编译器。但是我得到 10428 编译错误,主要是在 std 库中?
    【解决方案3】:

    您的库可能仅针对 X86_64 构建。您需要将库重新编译为通用二进制文件。

    编辑:使用 10.4 SDK。

    【讨论】:

    • 这是有道理的,但我该怎么做呢?例如 boost 库?
    【解决方案4】:

    在 Project 菜单中,选择 Set Active SDK,然后在此处选择 Mac OS X 10.4。

    如果您在使用该 SDK 时遇到链接错误,您可能添加了不是为 10.4 构建的库

    确保您使用的是 10.4 库,例如libcurl 可以在

    中找到
    /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/libcurl.dylib
    

    你可能正在链接

    /usr/lib/libcurl.dylib
    

    这将是您正在运行的操作系统的版本(我假设是 10.6)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多