#笔记
库:也叫代码库,可以把一些目标文件合并在一起方便使用(储存代码)
库分为静态库和动态库
静态库和动态库的区别
静态库 .a
动态库 .so
用户编译程序:
gcc main.c -o main 动态编译
gcc -static main.c -o main 静态编译
注意:
当库文件在静态库和动态库中各有一份时,动态编译用动态库,静态编译用静态库
静态库
制作方法
gcc -c 源文件名.c -o 生成的二进制文件名.o
ar rc lib静态库名称.a 生成的二进制文件名.o
注意:
静态库起名的时候必须以lib开头.a结尾
制作流程
step1
编写一个源文件myfun.c
step2
编写他的头文件myfun.h并在其中声明源文件中的函数
按照制作方法制作库文件
使用方法
情况1:使用静态库的文件与静态库在同一文件夹下
gcc 源文件名 静态库名称 -o 生成的可执行文件名
在同一文件夹下编写程序然后展开文件并引用库函数
编译执行
情况2:使用静态库的文件与静态库不在同一文件夹下
gcc 源文件名 -L 静态库所在的路径 -l 静态库名 -I 头文件所在路径 -o 生成的可执行文件名
-L
引用的静态库所在的路径
-l
静态库名
,
不要
lib
与
.a
-I
头文件所在路径
创建一个新的文件夹testnew,并在该文件夹下创建testnew1.c
这么做的目的是为了让使用静态库的文件与静态库不在同一文件夹下
编译执行
情况3:静态库文件与对应的头文件在系统文件夹下
gcc 源文件名 -l 库文件名 -o 生成的可执行文件名
将之前源文件的值更改一下以便区分
将库文件及其对应的头文件移动到系统中
编译执行
动态库
制作方法
gcc -shared 源文件名 -o 生成的动态库文件名.so