首页 > 解决方案 > 如何使用 CMake 混合链接静态库和共享库

问题描述

我有一个基于 Linux 的共享库 libtest.so。它链接到几个共享库。现在我有一些第三方静态库可以链接到 libtest.so。我知道这可以通过直接调用 gcc 来实现:

链接时可以混合使用静态库和共享对象库吗?

我的问题是如何用 CMake 做同样的事情?

标签: dynamiccmakestatic-libraries

解决方案


我没有看到问题。使用您的静态库,您可以执行以下操作:

target_link_libraries(my_target_or_executable /home/me/somedir/mymagiclib.a)

或者

target_link_libraries(my_target_or_executable -L/home/me/somedir/)
target_link_libraries(my_target_or_executable mymagiclib.a)

昨天我什至以这种方式链接到共享库。因为我在来自多个来源的 gcc 的地址清理程序库中存在冲突。

但是请注意与正常方式链接到库的区别。对于你的libtest.a,你这样做:

target_link_libraries(my_target_or_executable -ltest)

请注意,您在此处删除了lib前缀。但是当您想手动指定库时不要这样做。


推荐阅读