У меня есть проект cmake, который создает общую библиотеку, которая в свою очередь ссылается на другие библиотеки: openssl, zlib, libevent и libevhtp.Мой проект прекрасно компилируется / компоновается в linux (он создает общие библиотеки, а также исполняемые файлы, связанные с моими библиотеками (тестовые сценарии)).
Однако в macOS я получаю неопределенные ссылки, когда библиотека связана:
[ 54%] Linking CXX shared library libmylib.dylib
Undefined symbols for architecture x86_64:
"_RAND_bytes", referenced from:
mylib::randomStringHex(int) in util.cc.o
"_SSL_get_ex_data", referenced from:
(...more errors)
Теперь, если я добавлю это:
target_link_libraries(mylib PUBLIC ${EXTERNAL_LIBS})
(EXTERNAL_LIBS
содержит все внешние ссылки на библиотеки), он успешно создаст общую библиотеку, и я могу использовать ее / ссылку наэто и все работает.Однако я не могу сохранить эту опцию, потому что в Linux я не могу связать свою библиотеку с libevhtp
, потому что эта библиотека не скомпилирована с -fPIC
.
Так что вопрос в том, нормально ли, что в macOS созданнаябиблиотека всегда будет ссылаться на внешние библиотеки, или как этого избежать?В его нынешнем виде я могу либо успешно работать на Linux или MacOS, но не на обеих платформах.