对象文件是为较新的OSX版本而构建的,而不是链接

时间:2017-04-04 19:41:17

标签: c++ xcode macos gnu-make

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

MACOSX_DEPLOYMENT_TARGET=10.14 ./configure