我有以下build语句:
add_executable(foo a.c)
target_link_libraries(foo crypto)
这使得foo
成功生成,因为libcrypto.so
存在于lib路径中。
但是当foo
运行时,我希望它动态链接到另一个lib路径中的libcrypto2.so
。libcrypto.so
和libcrypto2.so
只是名称不同(请注意libcrypto.so
的SONAME是libcrypto.so
,libcrypt2.so
的SONAME是libcrypt2.so
)。
如何在CMake中实现这一点?我试过输入目标,化名,但没有结果。
1条答案
按热度按时间t3irkdon1#
Build
和Runtime
是两个不同的东西。CMake只在构建时出现,而不是运行时。由于您使用的是动态链接,符号将在运行时被解析并需要相应地处理。
在运行时,您可以通过更新
/etc/ld.so.conf
或在/etc/ld.so.conf.d/
中创建一个新文件(.conf)来将链接器指向所需的库。据我所知,在构建时对动态链接无能为力。