我正在编译的项目没有将我的共享对象文件链接到主程序。这可以通过对我的可执行文件执行ldd
命令并看到它libba.so => not found
来确认。
在我的CMakeLists.txt文件中,我有:
add_library(ba SHARED "/usr/local/include/libba.cpp" "/usr/local/include/libba.h")
target_link_libraries(ba (list of other libraries that link to ba))
set_target_properties(ba PROPERTIES LINK_INTERFACE_LIBRARIES "" LINK_FLAGS "${NO_UNDEFINED}")
add_executable(run "/usr/local/main/run.cpp")
target_link_libraries(run ba)
答案 0 :(得分:1)
ldd
报告运行时链接器可以找到的内容。
如果您在输出中看到libba.so
,则表示二进制 链接到库。
未找到""表示运行时链接器无法找到该库(即您没有将其安装在正常的系统位置)。
因此,您可以将库安装到系统位置,配置运行时链接程序以了解自定义位置,静态链接应用程序,或使用二进制文件中的rpath
让它运行-time链接其他地方来寻找它自己。