Я не могу связать статические библиотеки с исполняемым файлом в Mac OS X.
У меня в каталоге репо lib
есть все библиотеки, такие как libstdc++.a
, libssl.a
, libz.a
.
CMakeList.txt содержит:
(...)
set(PROJECT_LINK_LIBS libcurl.a libz.a libssl.a libcrypto.a libstdc++.a libjson-c.a)
link_directories(lib/)
add_executable(myapp ${SOURCES})
target_link_libraries(myapp ${PROJECT_LINK_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS})
При компиляции я получил сообщения (для каждого .a
файла):
ld: warning: ignoring file /Users/kuba/CLionProjects/RigService/lib/macos/libz.a, file was built for archive which is not the architecture being linked (x86_64)
и
Undefined symbols for architecture x86_64:
"_curl_easy_cleanup", referenced from:
HTTPConnection::request(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char const*) in HTTPConnection.cpp.o
"_curl_easy_init", referenced from:
HTTPConnection::request(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char const*) in HTTPConnection.cpp.o
"_curl_easy_perform", referenced from:
HTTPConnection::request(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char const*) in HTTPConnection.cpp.o
(...)
Я собирал это на Linux раньше, и там у меня не было никаких проблем.
Я пытался извлечь все файлы .o
из .a
и снова создать файл архива, используя
ar rcs libcurl.a *.o
но после этого у меня возникла та же проблема.
Я также пытался создать архив через
libtool -static -o libcurl.a *.o
но потом я получил сообщение:
sal:libcrypto kuba$ libtool -static -o libcrypto.a *.o
error: /Library/Developer/CommandLineTools/usr/bin/libtool: file: a_bitstr.o is not an object file (not allowed in a library)
error: /Library/Developer/CommandLineTools/usr/bin/libtool: file: a_bool.o is not an object file (not allowed in a library)
error: /Library/Developer/CommandLineTools/usr/bin/libtool: file: a_bytes.o is not an object file (not allowed in a library)
(...) // error for each .o file
И вот мой вопрос, может быть, стоит начать с него, можно ли связать одни и те же .a
файлы при компиляции на linux и mac os?