【发布时间】:2018-10-18 18:25:23
【问题描述】:
我正在使用 cmake,我试图找到如何链接到特定的共享对象。例如,libva-wayland 有 2 个共享对象 libva-wayland.so 和 libva-wayland.so.1。在这种情况下,指定库会自动创建对后者的依赖。
即使在CMakeLists.txt 中明确指定文件target_link_libraries(${PROJECT_NAME} usr/lib/x86_64-linux-gnu/libva-x11.so...,它仍然链接到usr/lib/x86_64-linux-gnu/libva-x11.so.1。
我正在验证具体内容,以便使用 ldd 链接我的二进制文件
我意识到我们希望保留这样指定的链接,因为您想确保它使用正确的版本,但我想部署在使用 libva 版本 2.xx 的不同系统上,并且依赖于 1 .xx 导致它无法在该系统上运行。
这可以实现吗?我猜我可能需要对 ldconfig 进行一些更改?
谢谢
【问题讨论】:
-
尝试使用库的绝对路径。
-
@arrowd 我曾尝试使用绝对路径,但不知何故,它仍然链接到不需要的符号链接。
-
在您的“现已删除”question 上,回答是否有更智能、更推荐的方法的唯一方法是在您的代码上下文中。对于这样的问题,没有通用的答案。看起来您在这里已经足够了解通用的理论问题在这里不能很好地工作。它们需要几十页才能涵盖所有可能的排列。显示您的代码、获得答案然后在需要时向后续 cmets 询问其他情况会更好。
标签: cmake linker shared-libraries