Я собрал и установил свою библиотеку в соответствии со следующим cmake:
install(
TARGETS ${LIBRARY_NAME}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(
TARGETS ${LIBRARY_NAME}_static
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
, поэтому я получаю:
/usr/local/pkgconfig/libmylib.pc
/usr/local/lib/libmylib.0.1.1.dylib
/usr/local/lib/libmylib.0.dylib
/usr/local/lib/libmylib.dylib
/usr/local/lib/libmylib.a
/usr/local/include/libmylib.h
Теперь, если я попытаюсь построить тест. c:
#include <libmylib.h>
int main() {
mylibfoo();
}
gcc test.c -lmylib
источник скомпилирован с библиотекой Dynami c.
else
gcc test.c
компоновщик выдает следующую ошибку:
Undefined symbols for architecture x86_64:
"_mylibfoo", referenced from:
_main in mylibfoo-a8b267.o
Я пытаюсь использовать систему Darwin Kernel версии 19.3.0 (MacOS), но я получаю тот же результат в системе Linux, если я не собираюсь с : gcc test.c -l:libmylib.a
Я хочу, чтобы, если -l
не было указано, при сборке использовалась библиотека stati c.