相关疑难解决方法(0)

共享对象文件中的版本号

我正在使用GCC从一组C++源文件构建共享对象文件.有关构建.so文件的所有示例教程都显示在.so后缀后使用版本号创建的文件.例如:

gcc -shared -Wl,-soname,libmean.so.1 -o libmean.so.1.0.1  calc_mean.o
Run Code Online (Sandbox Code Playgroud)

这将生成.so文件libmean.so.1.0.1

此外,如果我浏览/usr/lib本地计算机上的目录,我会看到许多.so文件最后都有版本号.

但是,当我编译共享对象文件并将其放入时/usr/lib,如果我在最后添加版本号,链接器将无法找到它.如果我删除版本号,它可以正常工作.我真的不关心是否设置版本号,我只是不明白为什么这似乎是一个常见的约定,但这会导致共享库无法使用链接器.那么,这里发生了什么?为什么有一个约定将版本号放在.so文件名的末尾?

c++ linux compiler-construction gcc shared-libraries

11
推荐指数
1
解决办法
1万
查看次数