如何在Ubuntu中设置CMake共享库的SONAME? 在How to add linker flag for libraries with CMake?${PROJECT_VERSION_MAJOR}") 使用CMake 3.16和源代码外的构建。它生成名为mylib.so.1.2.3的库,但其中似乎没有SONAME。set(CMAKE_SHARED_LINKER_FLAGS "-Wl,soname</
man ld说:
-soname=name在创建ELF共享对象时,将内部DT_SONAME字段设置为指定的名称。当可执行文件与具有DT_SONAME字段的共享对象链接时,当可执行文件运行时,动态链接器将尝试加载由DT_SONAME字段指定的共享对象,而不是使用给链接器的文件名。换句话说,在运行可执行文件时,可以强制链接器忽略外部共享库的DT_SONAME