Cmake - 不创建动态链接
Cmake - not creating the dynamic links
我正在编译的项目没有将我的共享目标文件链接到主程序。这可以通过在我的可执行文件上执行 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)
ldd
报告 运行-time link 用户可以找到的内容。
如果您在输出中看到 libba.so
,则表示二进制 已 link 编辑到库中。
"not found" 表示 运行-time linker 找不到那个库(即你没有它安装在正常的系统位置)。
因此您可以将您的库安装到系统位置,配置您的 运行-time linker 以了解您的自定义位置,link 您的应用程序静态,或使用一个 rpath
在你的二进制文件中让它给 运行 时间 linker 额外的地方来寻找它自己。
我正在编译的项目没有将我的共享目标文件链接到主程序。这可以通过在我的可执行文件上执行 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)
ldd
报告 运行-time link 用户可以找到的内容。
如果您在输出中看到 libba.so
,则表示二进制 已 link 编辑到库中。
"not found" 表示 运行-time linker 找不到那个库(即你没有它安装在正常的系统位置)。
因此您可以将您的库安装到系统位置,配置您的 运行-time linker 以了解您的自定义位置,link 您的应用程序静态,或使用一个 rpath
在你的二进制文件中让它给 运行 时间 linker 额外的地方来寻找它自己。