目录
(1)第一步:编辑生成例子程序hello.h、hello.c和mian.c.
一、用gcc生成静态库和动态库
1、hello实例
(1)第一步:编辑生成例子程序hello.h、hello.c和mian.c.
程序一:hello.h
程序二:hello.c
程序三:main.c
(2)第二步:用gcc将hello.c编译成.o文件。
运行ls命令查看是否生成.o文件。
在ls命令中存在hello.o文件。
(3)第三步:由.o文件创建静态库
创建静态库的工具:ar
静态库文件命名规范:以lib作为前缀,是.a文件
用ls命令可以查看到上述图片中的结果,可知创建成功。
(4)第四步:在程序中使用静态库
①gcc -o hello main.c -L. -lmyhello
注意:对于自定义的静态库,main.c还可以放在-L.和-lmyhello之间,否则myhello没有定义。
-L.:表示连接的库在当前目录
②gcc main.c libmyhello.a -o hello
③先生成main.o gcc -c main.c
生成可执行文件 gcc -o hello main.c libmyhello.a
验证静态库的特点
在删掉静态库的情况下,运行可执行文件,发现程序仍旧正常运行,表明静态库跟程序执行没有联系。同时,也表明静态库是在程序编译的时候被连接到代码中的。
(5)第五步:由.o文件创建动态库文件
创建动态库的工具:gcc
动态库文件命名规范:以lib作为前缀,是.so文件
gcc -shared -fPIC -o libmyhello.so hello.o
shared:表示指定生成动态链接库,不可省略
-fPIC:表示编译为位置独立的代码,不可省略
动态文件生成。
(6)第六步:在程序中使用动态库
gcc -o hello main.c -L. -lmyhello或gcc main.c libmyhello.so -o hello
再运行可执行文件hello,会出现错误。如图
解决方法:将libmyhello.so复制到目录/usr/lib中。
二、静态库.a与.so库文件的生成与使用
(1)代码:
A1.c程序:
A2.c程序:
A.h程序
test程序
(2)静态库.a文件的生成和使用
解决方式:将test.c中的exit(0)修改为return 0
文章评论