分类:
2012-07-13 09:47:17
“库”的好处自不必多说,学会制作函数代码库可以提高程序模块化,易于管理和维护。
l 静态库:是在可执行程序运行前已经加入到执行码中了,成为执行程序的一部分。
l 动态库:即共享库,启动执行程序时加载进去,可以被多个执行程序共享使用。
Linux环境下使用gcc编译器制作程序库。程序库都采用ELF格式。
下面讲述两者的创建和使用方法。
静态库
创建:
创建static_lib.c文件 内容如下:
在shell中编译该源文件,生成一个可重定位目标文件如下:
Linux环境下使用ar工具创建一个静态库,或者将目标文件加入到一个已经存在的静态库中。使用方法如下:
ar rcs 静态库名 目标文件1 目标文件2 ... 目标文件n
该命令表示将n个目标文件加入到指定的静态库中,如不存在则创建新静态库文件,并且将库文件的扩展名命名为.a,其中ar工具的参数rcs分别表示,r把列表中的文件加入到静态库中,c若指定静态库不存在则创建, s更新静态库文件的索引。
创建完成。
使用:
为了使应用程序可以正确引用该库中的全局符号,需要制作一个包含该静态库中全局符号声明的头文件。
创建static_lib.h文件内容如下:
创建测试程序main.c内容如下:
书上说有三种方法指定静态库生成可执行文件
-l指定静态库,直接带参数不跟空格。
-L指定库文件的搜索路径,.表示在当前目录下搜索需要的静态库文件。
这是我目前测试使用的唯一成功的方法,可能是我自己的问题,前两种方法都通不过。
动态库
Windows环境下的DLL文件和linux环境下的so文件。程序启动时被装载。
创建
创建share_lib.c文件如下:
Linux环境下使用gcc创建一个动态库:
使用
创建share_lib.h文件如下:
创建main1.c文件如下:
使用share_lib动态库创建一下程序
执行可执行程序app1,测试程序。