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 额外的地方来寻找它自己。