我已经搜索了几个小时来解决这个问题,但我尝试的一切都没有奏效。我正在尝试与某些库(libPoco、libmysqlcpp、libmysqlclient、libssl)进行静态链接。
我正在使用 cmake,虽然我正在定义静态库,但 cmake 只是查找动态库。我知道我的文件系统中的静态存档中有所有必需的库,并且我知道它们在哪里。
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
/lib
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/usr/lib/x86_64-linux-gnu)
find_library(POCO_NET NAMES libPocoNet.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library(POCO_UTIL NAMES libPocoUtil.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library(POCO_XML NAMES libPocoXML.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library (MYSQL_CLIENT NAMES libmysqlclient.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library (MYSQL_CPP NAMES libmysqlpp.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library (LIBSSL NAMES libssl.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
if (POCO_NET AND POCO_UTIL AND POCO_XML AND MYSQL_CLIENT AND MYSQL_CPP AND LIBSSL)
message(STATUS ${POCO_NET})
message(STATUS ${POCO_UTIL})
message(STATUS ${POCO_XML})
message(STATUS ${MYSQL_CLIENT})
message(STATUS ${MYSQL_CPP})
message(STATUS ${LIBSSL})
target_link_libraries(icarus
PocoNet
PocoUtil
PocoXML
mysqlpp
mysqlclient
ssl)
else ()
message(FATAL_ERROR "FATAL ERROR: missing library")
endif (POCO_NET AND POCO_UTIL AND POCO_XML AND MYSQL_CLIENT AND MYSQL_CPP AND LIBSSL)
但是当我运行cmake ..我得到的是:
-- /usr/local/lib/libPocoNet.so
-- /usr/local/lib/libPocoUtil.so
-- /usr/local/lib/libPocoXML.so
-- /usr/lib/x86_64-linux-gnu/libmysqlclient.so
-- /usr/lib/libmysqlpp.so
-- /usr/lib/libssl.so
当我尝试编译时,我得到未定义的引用,因为我使用了 -static 标志。我在这里想念什么?有没有办法强制 cmake 查找静态库而不是动态库?我在这件事上走错了吗?谢谢你。