共享库的链接名(Link Name)

共享库的链接名(Link Name)

Content #

需要链接一个libXXX.so.2.6.1的共享库,只需要在编译器命令行里面指定-lXXX 即可,可省略所有其他部分。编译器会根据当前环境,在系统中的相关路径(往往由-L参数指定)查找最新版本的“XXX”库。

这个“XXX”又被称为共享库的链接名(Link Name)。

不同类型的库可能会有同样的链接名,比如C语言运行库有静态版本(libc.a)和动态版本(libc.so.x.y.z)的区别,如果在链接时使用参数“-lc”,那么链接器会根据输出文件的情况(动态/静态)来选择适合版本的库。比如ld使用“-static”参数时,“-lc”会查找libc.a;如果使用“-Bdynamic”(这也是默认情况),它会查找最新版本的libc.so.x.y.z。

From #

程序员的自我修养