Cmake 从共享库依赖项中删除版本号
我有自己的项目-安全存储-和自己的OpenSSL包 接下来是openssl库:Cmake 从共享库依赖项中删除版本号,cmake,Cmake,我有自己的项目-安全存储-和自己的OpenSSL包 接下来是openssl库: libcrypto.so libssl.so 我使用cmake构建我的项目。项目有几个依赖项,包括openssl LIB: target_link_libraries(${LIBRARY_NAME} PUBLIC my_static_lib ... crypto ssl ) 编译后,我的二进制文件具有下一个依赖项: ldd ./bin/security_storage libssl.so.1.1 => no
target_link_libraries(${LIBRARY_NAME} PUBLIC
my_static_lib
...
crypto
ssl
)
编译后,我的二进制文件具有下一个依赖项:
ldd ./bin/security_storage
libssl.so.1.1 => not found
libcrypto.so.1.1 => not found
但是没有版本为的共享库,因为我的OpenSSL库没有版本号。 如何从二进制依赖项中删除版本号?我解决了我的问题 接下来的问题是:
解决方案是从带有符号链接和libs的自定义openssl文件夹复制。为什么这个问题被标记为CMake?您在项目中使用了CMake吗?如果是这样,请将您的CMake代码添加到您的问题帖子中。感谢您的评论,添加有关CMake的信息“因为我的OpenSSL LIB没有版本号”-当链接到
ssl
库时,链接者认为您有这些版本化的文件。看起来您在非系统目录中安装了libssl.so
,但链接器使用的是系统范围内安装的libssl.so
。在这种情况下,您可以尝试在链接库时将绝对路径传递给库。但是,如何禁用系统目录中的链接?我不能使用绝对路径,我的openssl库放在应用程序文件夹中“我不能使用绝对路径,我的openssl库放在应用程序文件夹中”-这不会改变任何东西。注意,链接器的路径和运行时加载程序的路径(RPATH)是不同的。一方拥有绝对路径并不意味着另一方拥有绝对路径。顺便问一下,你是如何获得你的libssl.so
?如果在创建时对其进行了版本控制,它仍然包含该信息。如果你想让这个库没有版本,那么你需要这样构建它。