Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198677
  • 博文数量: 22
  • 博客积分: 641
  • 博客等级: 上士
  • 技术积分: 756
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-27 00:41
文章分类

全部博文(22)

文章存档

2014年(1)

2013年(1)

2012年(20)

分类:

2012-07-02 22:39:55

“库”的好处自不必多说,学会制作函数代码库可以提高程序模块化,易于管理和维护。


静态库:是在可执行程序运行前已经加入到执行码中了,成为执行程序的一部分。

动态库:即共享库,启动执行程序时加载进去,可以被多个执行程序共享使用。


Linux环境下使用gcc编译器制作程序库。程序库都采用ELF格式。


下面讲述两者的创建和使用方法。

静态库

创建

创建static_lib.c文件  内容如下:


shell中编译该源文件,生成一个可重定位目标文件如下:

Linux环境下使用ar工具创建一个静态库,或者将目标文件加入到一个已经存在的静态库中。使用方法如下:

ar rcs 静态库名 目标文件目标文件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,测试程序。

阅读(2441) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~