GCC选项_-Wl,-soname

来源:互联网 发布:海康网络光纤监控方案 编辑:程序博客网 时间:2024/06/05 03:40

有时候为了方便,需要在编译时绑定共享库的搜索路径,这只需要设定链接器ld的参数即可,参数名为:-rpath,后面跟逗号分隔的路径,如:-rpath=/usr/lib,gcc如下使用:

gcc -Wl,-rpath=/usr/lib,这样运行时,就不需要设定LD_LIBRARY_PATH环境变量了。

-Wl的使用可以方便直接将链接需要的库,或者参数传递给链接器
-Wl.option
  此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然
后传递给会连接程序.

-Wl选项告诉编译器将后面的参数传递给链接器。

-soname则指定了动态库的soname(简单共享名,Short for shared object name)


soname的关键功能是它提供了兼容性的标准:

当要升级系统中的一个库时,并且新库的soname和老库的soname一样,用旧库链接生成的程序使用新库依然能正常运行。这个特性使得在Linux下,升级使得共享库的程序和定位错误变得十分容易。

在Linux中,应用程序通过使用soname,来指定所希望库的版本,库作者可以通过保留或改变soname来声明,哪些版本是兼容的,这使得程序员摆脱了共享库版本冲突问题的困扰。

可以通过readelf -d来查看每个动态库的SONAME