本文基于国嵌的视频教程以及Red Hat Enterprise Linux Server (Release 6.3)系统,总结一下在Linux系统下关于动态、静态函数库的设计。
Linux应用序设计中需要的外部函数主要由函数库和系统调用来提供:
两者的区别在于:
函数库按照链接方式可分为静态链接库和动态链接库。Linux应用序使用的主要函数库均存放于/lib, /usr/lib目录下,其中采用*.so.*方式命名的是动态函数库,而以*.a方式命令的是静态函数库。静态链接库的特点是:程序所要用到的库函数代码在链接是全部被copy到程序中。这样一来导致的问题就是应用程序大小增大,运行时对内存空间的浪费严重。
Linux下进行链接时 默认是链接动态库。如果需要使用静态库,需要使用编译选项-static。例:
gcc -static test.c -o test。
制作静态库一般步骤:
首先准备一个源文件mylib.c.
1. gcc –c mylib.c –o mylib.o
2. ar cqs libmylib.a mylib.o
3. 将制作好的libmylib.a 复制到/usr/lib即可
在应用程序的编译链接是应注意GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。
例如:gcc -static test.c –lmylib -o test
此时链接到的便是我们编写的静态链接库:libmylib.a
具体可参考相关技术手册以及国嵌培训视频。