任务一.用gcc生成静态库和动态库
1.1在ubuntu系统中创建一个目录来保存程序文件并编辑三个程序hello.h,hello.c,main.c。
先通过后端代码创建目录
然后用vim文本编辑器编辑三个程序文件
程序1 hello.h:
程序2 hello.c:
程序3 main.c:
1.2将hello.c文件编译成.o文件
1.3通过生成的.o文件生成静态库
静态库文件的命名规范是以lib为前缀,然后跟静态库名,扩展名为.a。创建静态库用ar命令。
1.4在程序中使用静态库
在调用静态库的内部函数时,需要在使用到这些公用函数的程序中包含公用函数的原型声明,然后在用gcc命令生成目标文件时指明静态库名,gcc将会从静态库中将公用函数连接到目标文件中。下面先生成目标程序hello,然后再运行它,看是否能实现程序功能。
成功实现了程序功能。
1.5通过生成的.o文件生成动态库
动态库文件命名规范与静态库类似,都是以lib为前缀然后跟库名,只不过它的扩展名为.so。通过在终端输入命令创建动态库
1.6在程序中使用动态库
在程序中使用动态库的方式与静态库完全一致。下面先生成目标文件,然后再运行它,看是否能成功实现程序功能。
通过实际操作,我发现确实可以生成目标文件hello,但是再运行它时会出现错误,无法正常运行。通过理解显示的错误原因,我发现原来是因为找不到动态库文件libmyhello.so。程序在运行时,会先在/usr/lib和/lib等目录中查找需要的动态库文件。若找到,则载入动态库,程序正常运行。若没有找到,则会出现错误,程序无法正常运行。之后我们将动态库文件libmyhello.so复制导入到/usr/lib中,发现目标文件可以正常运行。