Linux-unbuntu里静态库、动态库

时间:2024-01-23 22:09:35

静态库:

特点:生成的可执行程序复制了一份整个库,以空间换取时间

第一步:准备功能函数eg:add.c  sub.c   div.c...

第二步:把功能函数只编译不链接,得到.o文件

gcc -c add.c -o add.o

Linux-unbuntu里静态库、动态库_链接库

第三步:将功能函数的.o文件进行打包成库(打包完成会生成一个.a结尾的库,此库里已经把功能函数都封装进来了)

ar -rc libsta.a *.o

Linux-unbuntu里静态库、动态库_头文件_02

第四步:创建一个文件夹,把头文件都放入到新创建的头文件夹内

Linux-unbuntu里静态库、动态库_头文件_03

第五步:验证库的可用性

gcc main.c -o main -lsta -L./ -I./include

Linux-unbuntu里静态库、动态库_头文件_04

-lsta 是指链接的库名

-L./ 是指链接的库的位置在当前文件夹里

-I  <-大写的i,别记错了 ,代表的是头文件

-I./include 是指头文件所在的位置 



动态库:

特点:生成的可执行程序并没有复制库,在执行的时候,链接库; 用时间换取空间

第一步:准备功能函数:add.c、sub.c、mul.c ...

第二步:功能函数只编译不链接,得到.o文件

gcc -o -fpic add.c -o add.o

Linux-unbuntu里静态库、动态库_链接库_05

第三步:打包成库

gcc -shared -fpic -o libgo.so *.o   (libgo.so是库名)

Linux-unbuntu里静态库、动态库_动态库_06

打包完后会出现一个绿色可执行文件的.so后缀结尾的文件表示成功

第四步:将动态库移动到/usr/lib 中

sudo mv libgo.so /usr/lib

Linux-unbuntu里静态库、动态库_链接库_07

第五步:创建一个文件夹,把头文件都放入进去

Linux-unbuntu里静态库、动态库_头文件_08

第六步:验证库的可行性

gcc main.c -o main -lgo -L./ -I./include

Linux-unbuntu里静态库、动态库_链接库_09

编译完出现一个绿色可执行文件即成功

-lgo是链接库名   -L/usr/lib 是指库的所在位置  -I./include 是指头文件所在位置