gcc/g++ 链接库的编译与链接
https://blog.csdn.net/surgewong/article/details/39236707
看这一篇博文足够了!!!
注意:
1、链接过程中可能出现多种链接方式,需要使用一些参数来指定(参数都是-XXX形式的);
2、链接过程中同一个库(名称相同)的静态和动态两种链接库,在链接过程中,系统优先选择动态链接库;
3、动态链接库路径,系统默认在/usr/lib和/usr/local/lib两个库目录搜索,自己定义的库需要格外指定路径(设定变量LD_LIBRARY_PATH)或者将其拷贝到这两个目录下。当然可以将当前路径添加到/etc/ld.so.conf文件中或者/etc/ld/so.conf.d目录下的一个文件中。
4、查看动态链接库。有时候可能需要查看一个库中到底有哪些函数,nm命令可以打印出库中的涉及到的所有符号。库既可以是静态的也可以是动态的。nm列出的符号有很多,常见的有三种:
一种是在库中被调用,但并没有在库中定义(表明需要其他库支持),用U表示;
一种在库中定义的函数,用T表示,这是最常见的;
另一种所谓的“弱态”符号,它们虽然在库中定义,但可能被其他库中的同名符号覆盖,用W表示。
5、使用ldd命令可以查看程序的库依赖