peetonn
peetonn

Reputation: 3052

Object file was built for newer OSX version than being linked

I'm getting this error for C++ library I'm using. It uses GNU Automake for building. Which flag(s) I should supply for the make command to lower the target build platform to avoid seeing this warning in Xcode project where I'm trying to link against the library?

Upvotes: 36

Views: 40275

Answers (3)

Pierz
Pierz

Reputation: 8168

When using ./configure for a number of packages the macosx-version-min setting defaults to particular OS version - which can lead to the mentioned warning message if that OS version is lower than the macosx-version-min version that the linked library was compiled. However, this can be controlled by setting the MACOSX_DEPLOYMENT_TARGET environment variable before running configure e.g.

MACOSX_DEPLOYMENT_TARGET=10.14 ./configure

Upvotes: 5

MateuszL
MateuszL

Reputation: 2993

As cbrnr answered, you have to use -mmacosx-version-min compiler flag. To pass compiler flag through make, you can use CXXFLAGS environment variable:

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

Upvotes: 17

cbrnr
cbrnr

Reputation: 1751

You need to set the compiler flag -mmacosx-version-min to the version number of the SDK you want to build against. I don't use automake, but in cmake you'd set the variable CMAKE_OSX_DEPLOYMENT_TARGET, and in qmake you'd set the variable QMAKE_MACOSX_DEPLOYMENT_TARGET.

Upvotes: 25

Related Questions