如何解决链接到非版本共享对象库CMake
我正在尝试将二进制链接链接到标准*.so
共享对象库,这增加了生成两个符号链接的难度,这些符号链接指向完全版本化的共享对象库。我看到的问题是CMake将二进制文件链接到主要版本,因为SOVERSION
设置为主要版本变量。但是,如果删除SOVERSION
,则不会生成中间链接*.so.2
。如果可能的话,我想灵活地链接到未版本化的*.so
或主要版本的*.so.2
。
更清楚地说,这是我的set_target_properties(名称已更改)。
set_target_properties(
lib
PROPERTIES
FRAMEWORK ON
SOVERSION ${LIB_VERSION_MAJOR}
VERSION ${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}
ARCHIVE_OUTPUT_DIRECTORY "lib"
LIBRARY_OUTPUT_DIRECTORY "lib"
)
二进制文件上的objdump结果表明二进制文件已链接到相对的主要版本。
richard@VirtualBox:~/m2md-repo/build/work/coolpad/debug$ arm-linux-gnueabi/bin/objdump -x binary | grep "so"
NEEDED liblib.so.2
NEEDED lib_modules.so.0
NEEDED lib_services.so.0
通过查看安装位置,CMake创建了库的完整major.minor.path版本以及两个符号链接。
ll _install/usr/lib | grep lib
-rw-r--r-- 1 richard richard 63735 Oct 12 16:56 liblib.so.2.0.0
lrwxrwxrwx 1 richard richard 17 Oct 12 16:57 liblib.so.2 -> liblib.so.2.0.0
lrwxrwxrwx 1 richard richard 13 Oct 12 16:57 liblib.so -> liblib.so.2
有没有一种方法可以使CMake仅链接到*.so
,同时还可以创建另外两个符号链接?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。