一、用 gcc 生成 .a 静态库和 .so动态库
(一)编辑生成例子程序 hello.h、hello.c 和 main.c
(二)将hello.c编译成.o文件
(三)由.o文件创建静态库
(四)在程序中使用静态库
(五)由.o文件创建动态库文件
(六)在程序中使用动态库
二、Linux 下静态库.a 与.so 库文件的生成与使用
(一)准备工作
(二)静态库.a 文件的生成与使用
(三)共享库.so 文件的生成与使用
三、自建函数静态库.a与.so库文件的生成与使用
(一)编写函数代码
(二)静态库.a 文件的生成与使用
(三)共享库.so 文件的生成与使用
四、总结
五、参考文献
1.创建文件test1
mkdir test1//创建文件夹test1
cd test1//打开文件夹test1
2.用Vim编辑器新建一个hello.c文件并输入hello.c的代码
3.用Vim编辑器新建一个hello.h文件并输入hello.h的代码
4..用Vim编辑器新建一个main.c文件并输入main.c的代码
1.使用gcc工具,输入gcc -c hello.c命令,将hello.c编译成.o文件
2.运行ls命令看看是否生存了 hello.o 文件
静态库文件名的命名规范是以 lib 为前缀,紧接着跟静态库名,扩展名为.a。
1.输入以下命令创建静态库
ar -crv libmyhello.a hello.o
2.运行ls命令看看静态库是否生成
注意,gcc 会在静态库名前加上前缀 lib,然后追加扩展名.a 得到的静态库文件名来查找静态库文件。
1.输入命令
gcc main.c libmyhello.a -o hello
2.输入./hello命令运行程序,得出运行结果
动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀 lib,但其 文件扩展名为.so。
1.输入以下命令创建动态库
gcc -shared -fPIC -o libmyhello.so hello.o
2.运行ls命令看看动态库文件是否生成
1.输入命令
gcc main.c libmyhello.so -o hello
2.输入./hello命令运行程序
3.上述出现错误,原因分析
错误提示,找不到动态库文件 libmyhello.so。程序在运行时, 会在/usr/lib 和/lib 等目录中查找需要的动态库文件。若找到,则载入动态库,否则将提 示类似上述错误而终止程序运行。我们将文件 libmyhello.so 复制到目录/usr/lib 中,再试试。
4.解决问题
用管理员权限,将 libmyhello.so 复制到目录/usr/lib
输入命令sudo cp -i libmyhello.so /usr/lib
5.再次输入./hello命令运行程序,得出结果
1.创建文件test2
mkdir test2//创建文件夹test2
cd test2//打开文件夹test2
2.用 vim文本编辑器编辑生成所需要的四个文件 A1.c 、 A2.c、 A.h、 test.c
A1.c:
A2.c:
A.h:
test.c:
1.生成目标文件
2.运行ls命令查看生成的目标文件
3.生成静态库.a 文件
4.使用.a 库文件,创建可执行程序(若采用此种方式,需保证生成的.a 文件与.c 文件保 存在同一目录下,即都在当前目录下)
5.输入./test运行程序,得出结果
1.生成目标文件(此处生成.o 文件必须添加"-fpic"(小模式,代码少),否则在生成.so 文件时会出错)
2.生成共享库.so 文件
3.使用.so 库文件,创建可执行程序
4.出现错误
5.解决方法
用管理员权限,将 libsofile.so 复制到目录/usr/lib
输入命令sudo cp -i libsofile.so /usr/lib
6. 再次输入./test命令运行程序,得出结果
1.创建x2x.c文件,并编写代码
2.创建x2y.c文件,并编写代码
3.创建x.h文件,并编写代码
4.创建main.c文件,并编写代码
1.生成目标文件
2.运行ls命令查看生成的目标文件
3.生成静态库.a 文件
4.使用.a 库文件,创建可执行程序
5.输入./main运行程序,得出结果
1.生成目标文件(此处生成.o 文件必须添加"-fpic"(小模式,代码少),否则在生成.so 文件时会出错)
2.生成共享库.so 文件
3.使用.so 库文件,创建可执行程序
4.出现错误
5.解决方法
用管理员权限,将 xy.so 复制到目录/usr/lib
输入命令sudo cp -i xy.so /usr/lib
6. 再次输入./main命令运行程序,得出结果
通过本次实验,我学会了如何生成静态库.a文件和动态库.os文件,函数调用静态库和动态库的方法。学会了如何生成目标文件,生成可执行的程序。
gcc静态库和动态库的生成以及使用_一只特立独行的猪️的博客-CSDN博客_gcc 静态库
用gcc生成静态库和动态库.pdf
静态库.a与.so库文件的生成与使用.pdf