Skip to content

ld: warning: object file libpython3.9.a was built for newer macOS version (12.0) than being linked (11.4) #408

@hakonhagland

Description

@hakonhagland

I am trying to build Inline::Python on macOS 12.0.1. I installed perl 5.34.0 with perlbrew before I upgraded my mac from 11.4 to 12.0, this can be seen by running

 $ perl -MData::Dumper -MConfig -E 'print Dumper (\%Config)' | grep macosx
          'ccflags' => '-fno-common -DPERL_DARWIN -mmacosx-version-min=11.4 -fno-strict-aliasing -pipe -fstack-protector-strong -DPERL_USE_SAFE_PUTENV',
          'cppflags' => '-fno-common -DPERL_DARWIN -mmacosx-version-min=11.4 -fno-strict-aliasing -pipe -fstack-protector-strong',
          'lddlflags' => ' -mmacosx-version-min=11.4 -bundle -undefined dynamic_lookup -fstack-protector-strong',
          'ldflags' => ' -mmacosx-version-min=11.4 -fstack-protector-strong',
          'ccflags_nolargefiles' => '-fno-common -DPERL_DARWIN -mmacosx-version-min=11.4 -fno-strict-aliasing -pipe -fstack-protector-strong -DPERL_USE_SAFE_PUTENV',
          'ldflags_nolargefiles' => ' -mmacosx-version-min=11.4 -fstack-protector-strong',

where -mmacosx-version-min=11.4 indicates that perl was built on macOS 11.4. I tried to figure out the meaning of this compiler flag but I could find no clear explanations on google. As I understand, it will trigger compiler warnings from clang if I am trying to link with a library that is built after macOS 11.4. But then again, why is the flag then not called -mmacosx-version-max ? I am confused.

Anyway, after upgrading my mac to 12.0, I installed a new python library with pyenv, and if I now try to build Inline::Python I get the following warnings from clang when running make:

[...]
LD_RUN_PATH="/Users/hakonhaegland/.pyenv/versions/3.9.7/lib/python3.9/config-3.9-darwin" cc -Wl,-rpath,"/Users/hakonhaegland/.pyenv/versions/3.9.7/lib/python3.9/config-3.9-darwin" -mmacosx-version-min=11.4 -bundle -undefined dynamic_lookup -fstack-protector-strong  Python.o py2pl.o perlmodule.o util.o  -o blib/arch/auto/Inline/Python/Python.bundle  \
	   -L/Users/hakonhaegland/.pyenv/versions/3.9.7/lib/python3.9/config-3.9-darwin -lpython3.9 -ldl -Wl,-framework -Wl,CoreFoundation   \

ld: warning: object file (/Users/hakonhaegland/.pyenv/versions/3.9.7/lib/python3.9/config-3.9-darwin/libpython3.9.a(boolobject.o)) was built for newer macOS version (12.0) than being linked (11.4)
ld: warning: object file (/Users/hakonhaegland/.pyenv/versions/3.9.7/lib/python3.9/config-3.9-darwin/libpython3.9.a(bytesobject.o)) was built for newer macOS version (12.0) than being linked (11.4)
ld: warning: object file (/Users/hakonhaegland/.pyenv/versions/3.9.7/lib/python3.9/config-3.9-darwin/libpython3.9.a(object.o)) was built for newer macOS version (12.0) than being linked (11.4)
ld: warning: object file (/Users/hakonhaegland/.pyenv/versions/3.9.7/lib/python3.9/config-3.9-darwin/libpython3.9.a(dictobject.o)) was built for newer macOS version (12.0) than being linked (11.4)
ld: warning: object file (/Users/hakonhaegland/.pyenv/versions/3.9.7/lib/python3.9/config-3.9-darwin/libpython3.9.a(errors.o)) was built for newer macOS version (12.0) than being linked (11.4)
[...]

What is the best approach to avoid this warning ? (The warning disappears if I remove -mmacosx-version-min=11.4 from the above cc command line, or if I change the flag to -mmacosx-version-min=12.0.) Is this something that should be changed in ExtUtils::MakeMaker or in the Makefile.PL of Inline::Python ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions