- 一、实例准备
- 1.创建目录
- 2.编辑实例程序
- 二、静态库的生成和使用
- 1.生成.o文件
- 2.生成.a静态库文件
- 3.创建可执行文件,编译运行
- 4.查看文件大小
- 三、动态库的生成和使用
- 1.生成.o文件
- 2.生成.so动态库文件
- 3.创建可执行文件,编译运行
- 4.查看文件大小
一、实例准备 1.创建目录在Linux中,有两种函数库,以.a后缀命名的是静态函数库,以.so后缀命名的是动态函数库。
- 静态函数库:在编译链接时候,程序所需要的函数会从静态函数库中拷贝到执行文件中。当程序运行的时候,就不需要链接外部的函数库了。
- 动态函数库:在编译链接时,程序所需要的函数不会从动态函数库中拷贝出来,而是在程序运行的时候,才会将所需要的函数加载进来。
创建一个目录,保存实例所需要的文件。
- mkdir–Make Directory:用于创建一个新目录。
- cd–Change Directory:切换文件路径,将给定的文件夹(目录)设置成当前工作目录。
用vi、vim、nano或gedit等文本编辑器编辑生成所需要的3个文件 sub1.c、sub2.c、main.c 。
按i键进行编辑,编辑完成按ESC键退出输入模式,最后一排,输入 :wq,按回车键即可保存退出。
sub1.c:
sub2.c:
main.c:
- gcc:https://www.cnblogs.com/yangziwen0709/p/5014420.html
- ls–List:列举出当前工作目录的内容(文件或文件夹)。
静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。
用gcc将main函数的目标文件与静态库文件进行链接,生成可执行程序。输入命令./main编译运行程序main.c。
size:用于查看目标文件、库或可执行文件中各段及其总和的大小。
发现错误,运行ldd main,查看链接情况。找不到.so文件,这是由于 linux 自身系统设定的相应的设置的原因,即其只在/lib或/usr/lib下搜索对应的.so文件。
将对应.so文件拷贝到对应路径。再次编译运行,正确。
- sudo:是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。
- cp:将当前目录下的所有文件复制到新目录下.(用户使用该指令复制目录时,必须使用参数-r或者-R。)
比较发现静态库要比动态库要小很多,生成的可执行文件大小也存在较小的差别。
参考文献
https://blog.csdn.net/weixin_51087836/article/details/109086411
https://www.cnblogs.com/Recca/p/11385827.html



