linux下静态库和动态库使用笔记
2017-09-24 本文已影响0人
邦柳
基础:
静态库
一般是libxxx.a这种形式,一般程序在编译的时候会被链接到目标代码中。这是使用静态库的好处,程序不需要再去依赖外部的库,因为一开始就已经被包含进去了。但这也是一把双刃剑,一般静态库比较大,这样也会导致程序比较大。一旦静态库被修改了,程序也需要重新编译。
动态库
动态库一般被命名为libxxx.so,顾名思义,动态库在编译的时候没有被编译进目标代码中,只有当运行到执行相关函数时才调用相关函数。这就意味着,修改动态库,程序不需要重新编译,而且程序也相对体积会小一点。因此,应该用哪种方式,还是见仁见智吧。
个人笔记:
1.链接库的时候,顺序是从右往左,记得把最基础的库放在命令的最右边。
2.如果同时链接动态库和静态库,它们含有相同名称函数的话,会优先调用动态库的,如果偏要用静态库的函数的话,需要一点设置,编译时添加参数:-static 。这有点暴力,会导致这个参数后的所有的库都是用静态链接的方式,这里有可能会引发错误,如果后面还包含了动态库的话。