___isOSVersionAtLeast is undefined. How I spent several days compiling curl and linking it.
I use Kotlin/Native to create a tiny command line utility for Windows, Linux, and macOS. I believe the best app is the app without dependencies, and thus without requirements and dependencies hassle. That is easier than baking os-specific packages or installers.
Curl is one of my dependencies for this project. So I compiled it to
libcurl.a
and lined to Kotlin/Native
easily with a few lines of Gradle script.
It failed with something cryptic on my macOS 10.13.4 with Xcode 9.3.1.
Undefined symbols for architecture x86_64:
"___isOSVersionAtLeast", referenced from:
_singleipconnect in libcurl.a(libcurl_la-connect.o)
_darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o)
_darwinssl_version_from_curl in libcurl.a(libcurl_la-darwinssl.o)
ld: symbol(s) not found for architecture x86_64
Digging internet did not help. And that is mostly why I am blogging that one. Changing or patching the way I build curl was useless too. Nikolay suggested me to check target version of my binaries. That was it. Kudos Nikolay!
I should have compiled the curl with 10.13
as min version for Mac. I did that by setting
CFLAGS
environment variable to -mmacosx-version-min=10.13
for ./configure
and make
commands.
Continue reading the next part of the investigation
comments powered by Disqus