📒博客首页:何与非的博客
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
❤️ 期待一起交流!
🙏作者水平很有限,如果发现错误,求告知,多谢!
🌺有问题可私信交流!!!
系列文章目录
Makefile步步为营第一步,简单玩玩
Makefile步步为营第二步,来点花活儿
Makefile步步为营第三步,来点真实的
Makefile步步为营第四步,整点动静
库文件的生成和使用
在实际编码工作中,经常会与其他人协同工作,常常需要用到静态库和动态库。本节主要介绍如何生成静态库、动态库并且调用库。
预定义变量:
变量名 | 变量含义 |
---|---|
AR | 库文件维护程序名称,默认为ar.AS汇编程序名称,默认值为as。 |
CC | C编译器的名称,默认为cc。CPP C预编译器的名称,默认值为$(CC) -E |
CXX | C++编译器的名称,默认为g++ |
FC | FORTRAN编译器的缩写,默认值为f77 |
RM | 文件删除程序名称,默认为rm -f |
GCC告警选项
选项 | 含义 |
---|---|
-Wall | 允许发出gcc提供的所有有用的报警信息 |
-w | 关闭所有警告 |
-werror | 把所有的告警信息转化为错误信息,并在告警发生时终止编译过程 |
-ansi | 支持符合ANSI标准的C程序 |
-pedantic | 允许发出ANSI C标准所列出的全部警告信息 |
-pedantic-error | 允许发出ANSI C标准所列出的全部错误信息 |
库的分类
根据链接时期的不同,库又有静态库和动态库之分。
静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。
有别于静态库,动态库的链接是在程序执行的时候被链接的。所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用。
静态库的生成和使用
再次调整文件结构如下,此时有一个主控Makefile和三个次级Makefile文件。lib文件夹中存放静态库文件,test文件夹中是测试文件及Makefile文件。