Я успешно создал кроссплатформенную статическую библиотеку для OSX, выполнив следующие шаги:
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=OFF "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" ..
cmake --build .
Я также в основном успешно связал эту библиотеку с моим собственным проектом, но сейчас получаю массу ошибок компоновщика в XCode 5.1.1 по поводу отсутствующих символов:
Undefined symbols for architecture x86_64:
"_SSLClose", referenced from:
_stransport_close in libVAST.a(stransport_stream.c.o)
"_SSLCopyPeerTrust", referenced from:
_stransport_connect in libVAST.a(stransport_stream.c.o)
_stransport_certificate in libVAST.a(stransport_stream.c.o)
"_SSLCreateContext", referenced from:
_git_stransport_stream_new in libVAST.a(stransport_stream.c.o)
"_SSLHandshake", referenced from:
_stransport_connect in libVAST.a(stransport_stream.c.o)
"_SSLRead", referenced from:
_stransport_read in libVAST.a(stransport_stream.c.o)
"_SSLSetConnection", referenced from:
_git_stransport_stream_new in libVAST.a(stransport_stream.c.o)
"_SSLSetIOFuncs", referenced from:
_git_stransport_stream_new in libVAST.a(stransport_stream.c.o)
"_SSLSetPeerDomainName", referenced from:
_git_stransport_stream_new in libVAST.a(stransport_stream.c.o)
"_SSLSetProtocolVersionMax", referenced from:
_git_stransport_stream_new in libVAST.a(stransport_stream.c.o)
"_SSLSetProtocolVersionMin", referenced from:
_git_stransport_stream_new in libVAST.a(stransport_stream.c.o)
"_SSLSetSessionOption", referenced from:
_git_stransport_stream_new in libVAST.a(stransport_stream.c.o)
"_SSLWrite", referenced from:
_stransport_write in libVAST.a(stransport_stream.c.o)
"_SecCertificateCopyData", referenced from:
_stransport_certificate in libVAST.a(stransport_stream.c.o)
"_SecCopyErrorMessageString", referenced from:
_stransport_error in libVAST.a(stransport_stream.c.o)
"_SecTrustEvaluate", referenced from:
_stransport_connect in libVAST.a(stransport_stream.c.o)
" _SecTrustGetCertificateAtIndex", referenced from:
_stransport_certificate in libVAST.a(stransport_stream.c.o)
...
...
и так далее.
Я предполагаю, что там где-то пропущен дополнительный шаг или зависимость, и я получил несколько подсказок, что это не совсем беспрецедентно, учитывая этот поток git-hub по ржавчине, (https://github.com/rust-lang/cargo/issues/2295) но я не совсем уверен, как поступить. Мысли?
Наиболее вероятная причина — старая версия OSX и libgit2. В некоторых версиях libgit2 предполагается, что инфраструктура безопасности в OSX / macOS всегда обеспечивает SecureTransport (библиотека, предоставляющая символы шифрования / TLS, которые вам не хватает).
Это не относится к более старым операционным системам. Это было исправлено в конце 2015 года, и это исправление включено в серию выпусков v0.24, а также в v0.23.2.
Других решений пока нет …