gpt4 book ai didi

linux - 配置 CMake 以遵循符号链接(symbolic link)

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:40 30 4
gpt4 key购买 nike

在 Linux 中,考虑有 test.so 文件。它在运行时需要其他 .so(例如 alpha.so、beta.so、charlie.so)文件。它基本上是一个共享库。当我在终端中运行以下命令时:

$ ldd test.so

显示了以下输出:

alpha.1.4.so ==> usr/lib/x86-linux-gnu/alpha.1.4.so
beta.1.4.so ==> usr/lib/x86-linux-gnu/beta.1.4.so
charlie.1.4.so ==> usr/lib/x86-linux-gnu/charlie.1.4.so

我想修改用于构建测试的 cmake.so 以指向符号链接(symbolic link),就像这样

alpha.so ==> usr/lib/x86-linux-gnu/alpha.1.4.so
beta.so ==> usr/lib/x86-linux-gnu/beta.1.4.so
charlie.so ==> usr/lib/x86-linux-gnu/charlie.1.4.so

而不是将其链接到该库的特定版本(alpha.1.4.sobeta1.4.socharlie.1.4.so)。

如何修改我的 CMake 配置以使 test.so 文件遵循符号链接(symbolic link)而不是特定版本?我基本上想让它独立于版本。

最佳答案

@Tsyvarev 的解决方案适用于 SO_NAME 中不包含版本的动态库。

但在我的例子中,.so 文件的 SO_NAME 包含其中的版本号。虽然不建议在 SO_NAME 中使用版本号,但一些库会这样做。我在 linux 中使用 patchelf 命令修改了 .so 文件。

patchelf --set-soname dynamic_lib.so dynamic_lib.so.version_number

这将更改库的 SO_NAME。

关于linux - 配置 CMake 以遵循符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50814162/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com