如何使目标链接在构建时使用一个lib名称,而在cmake中运行时使用另一个名称?

gk7wooem  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(67)

我有以下build语句:

add_executable(foo a.c)

target_link_libraries(foo crypto)

这使得foo成功生成,因为libcrypto.so存在于lib路径中。
但是当foo运行时,我希望它动态链接到另一个lib路径中的libcrypto2.solibcrypto.solibcrypto2.so只是名称不同(请注意libcrypto.so的SONAME是libcrypto.solibcrypt2.so的SONAME是libcrypt2.so)。
如何在CMake中实现这一点?我试过输入目标,化名,但没有结果。

t3irkdon

t3irkdon1#

BuildRuntime是两个不同的东西。
CMake只在构建时出现,而不是运行时。由于您使用的是动态链接,符号将在运行时被解析并需要相应地处理。
在运行时,您可以通过更新/etc/ld.so.conf或在/etc/ld.so.conf.d/中创建一个新文件(.conf)来将链接器指向所需的库。据我所知,在构建时对动态链接无能为力。

相关问题