Targeting older versions of macOS

Al Fransham at Affective Sound via Lame-dev <[email protected]> Fri, 8 May 2020 06:45:41 +0000
Newsgroups gmane.comp.audio.mp3.lame
Message-ID <LOYP123MB335726D551AF3CFA2CD019B3BEA20@LOYP123MB3357.GBRP123.PROD.OUTLOOK.COM>
I wonder if you can help. I wish to use Lame to mp3 encode audio on macOS from El Capitan (10.11) forward. My development machine runs Catalina (10.15).

I am new to Lame and to its associated build tools so I apologise if any of this demonstrates an incorrect approach or should be obvious.

On macOS Catalina, I built libmp3lame.a using the following:

./configure --disable-decoder --host="x86_64"
make
make install

I linked to this from my program and this worked fine on Catalina itself. I then tested my application on El Capitan and attempting to call lame_init_params failed with the following error:

dyld: lazy symbol binding failed: Symbol not found: ____chkstk_darwin
  Referenced from: /Applications/MyApp.app/Contents/MacOS/MyApp
  Expected in: /usr/lib/libSystem.B.dylib

So I built lame using the same configuration on El Capitan, then linked the resultant libmp3lame.a and my program now works on both Catalina and El Capitan. So far so good.

I have two questions.

Firstly, since I am able to successfully use libmp3lame.a on El Capitan, is it reasonable to expect this to work fine for all versions of macOS following El Capitan assuming an x86_64 CPU?

Secondly, is it possible on Catalina (or other OS) to configure the build in such a way that it works with earlier OSs, e.g. El Capitan without having to build on the older OS itself?

Thank you.
Al.