【问题标题】:Object file was built for newer OSX version than being linked目标文件是为比链接更新的 OSX 版本构建的
【发布时间】:2017-08-30 04:30:00
【问题描述】:

我正在使用的 C++ 库出现此错误。它使用 GNU Automake 进行构建。我应该为make 命令提供哪个标志来降低目标构建平台以避免在我尝试链接库的 Xcode 项目中看到此警告?

【问题讨论】:

    标签: c++ xcode macos gnu-make


    【解决方案1】:

    您需要将编译器标志 -mmacosx-version-min 设置为您要构建的 SDK 的版本号。我不使用automake,但在cmake 中设置变量CMAKE_OSX_DEPLOYMENT_TARGET,在qmake 中设置变量QMAKE_MACOSX_DEPLOYMENT_TARGET

    【讨论】:

    • 如果您在使用 QtCreator 时遇到此问题,只需将 QMAKE_MACOSX_DEPLOYMENT_TARGET = xx.xx 添加到您的项目文件中,其中 xx.xx 是用于编译库的 SDK 的版本号
    【解决方案2】:

    正如 cbrnr 回答的那样,您必须使用 -mmacosx-version-min 编译器标志。要通过 make 传递编译器标志,可以使用 CXXFLAGS 环境变量:

    make CXXFLAGS="-mmacosx-version-min=10.10" <target or other make params>
    

    【讨论】:

      【解决方案3】:

      当将./configure 用于许多包时,macosx-version-min 设置默认为特定的操作系统版本 - 如果该操作系统版本低于编译链接库的macosx-version-min 版本,则可能导致上述警告消息.但是,这可以通过在运行 configure 之前设置 MACOSX_DEPLOYMENT_TARGET 环境变量来控制,例如

      MACOSX_DEPLOYMENT_TARGET=10.14 ./configure
      

      【讨论】:

        猜你喜欢
        • 2015-10-28
        • 2015-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-14
        • 2015-08-02
        • 1970-01-01
        相关资源
        最近更新 更多