标签:
上一篇文章里讲解了linux下静态链接库的编译与使用,下面我们来聊聊动态链接库的编译与使用方法。
所谓动态链接库,也就是说编译的时候不会真的把你引用到的库给编到你的执行程序里,而是在执行时候才会去加载相关的库,所有用到此库的程序可以共享一份代码,这样带来的好处是可执行程序所占的空间变小了,同时,如果库需要升级,你并不需要重新编译你的程序,只要把相关的库升级即可。
接下来我们来看看动态链接库的编译与使用方法,代码还是和上文中的一样,分别为?sum.c, sum.h, 和main.c, 在linux下动态链接库文件一般叫做libxxx.so。
192:zch kane$ ls main.c sum.c sum.h 192:zch kane$ 192:zch kane$ gcc -c -fPIC sum.c ------ -fIPC告诉编译器将源代码编译成共享的object文件,PIC(Position-Independent Code)意思是非位置依赖性代码 192:zch kane$ ls main.c sum.c sum.h sum.o 192:zch kane$ gcc -shared -fPIC -o libsum.so sum.o -------- 生成动态链接库文件libsum.so 192:zch kane$ ls libsum.so main.c sum.c sum.h sum.o 192:zch kane$ 192:zch kane$ gcc -o sumappd main.c -L . -lsum --------- 生成可执行程序 192:zch kane$ ls libsum.so sum.c sum.o main.c sum.h sumappd 192:zch kane$ ./sumappd ---------运行生成结果 Num1 + Num2 = 3
linux下的动态链接库和静态链接库到底是个什么鬼?(二)动态链接库的编译与使用
标签:
原文地址:http://www.cnblogs.com/zhengchunhao/p/4886734.html