一个库文件就是多个目标文件的集合,一般情况下,库文件是有编入索引的,这样就便于查找其中的函数、变量等等。Unix系统(或者说大部分现代操作系统)允许我们两种库——静态库(static libraries)和动态库(shared (or dynamic) libraries)。
静态库是目标文件的简单集合,由链接器在链接阶段加入程序中,在程序运行阶段并不需要,相反,此时为了运行程序只有可执行文件是需要的。建立一个静态库最基本的程序是“ar”——“archiver”,它能建立或者修改静态库中的目标文件,假设已经有三个目标文件,util_file.o、util_net.o和 util_math.o,那么我们可以这样建立一个静态库:
- ar rc libutil.a util_file.o util_net.o util_math.o
这样我们就建立了一个名为libutil.a的静态库,选项c:告诉ar,如果库文件不存在就建立库文件,选项r,用新的目标文件替换旧文件。
建立或者修改库文件之后,需要建立索引:
当存档文件索引建立时间比文件最后修改时间早时,编译器会提示索引过期,并且程序终止。面对这种情况,有两种解决方法: 1、再次运用ranlib程序,重新生成索引
2、当复制存档文件到其他目录时,用cp -p命令
在一切准备就绪之后,接下来就是将库文件应用到我们自己的程序中了。如下:
- cc main.o -L. -lutil -o prog
注意-L.中的"."表示当前目录。而对于库文件libutil.a,我们丢弃了前缀lib和后缀.a。
恩,差不多就是这样了。。。
阅读(1811) | 评论(0) | 转发(1) |