静态库:
特点:生成的可执行程序复制了一份整个库,以空间换取时间
第一步:准备功能函数eg:add.c sub.c div.c...
第二步:把功能函数只编译不链接,得到.o文件
gcc -c add.c -o add.o
第三步:将功能函数的.o文件进行打包成库(打包完成会生成一个.a结尾的库,此库里已经把功能函数都封装进来了)
ar -rc libsta.a *.o
第四步:创建一个文件夹,把头文件都放入到新创建的头文件夹内
第五步:验证库的可用性
gcc main.c -o main -lsta -L./ -I./include
-lsta 是指链接的库名
-L./ 是指链接的库的位置在当前文件夹里
-I <-大写的i,别记错了 ,代表的是头文件
-I./include 是指头文件所在的位置
动态库:
特点:生成的可执行程序并没有复制库,在执行的时候,链接库; 用时间换取空间
第一步:准备功能函数:add.c、sub.c、mul.c ...
第二步:功能函数只编译不链接,得到.o文件
gcc -o -fpic add.c -o add.o
第三步:打包成库
gcc -shared -fpic -o libgo.so *.o (libgo.so是库名)
打包完后会出现一个绿色可执行文件的.so后缀结尾的文件表示成功
第四步:将动态库移动到/usr/lib 中
sudo mv libgo.so /usr/lib
第五步:创建一个文件夹,把头文件都放入进去
第六步:验证库的可行性
gcc main.c -o main -lgo -L./ -I./include
编译完出现一个绿色可执行文件即成功
-lgo是链接库名 -L/usr/lib 是指库的所在位置 -I./include 是指头文件所在位置