创建2个目录进行创建与使用的演示
创建静态库
准备源文件与头文件
查看所有源文件与头文件
将源文件编译.o文件,然后将.o文件打包为静态库
gcc -c mymath.c -o mymath.o -std=c99
gcc -c myprint.c -o myprint.o -std=c99
ar指令:打包多个.o文件为静态库
ar -rc libhello.a mymath.o myprint.o
ar指令打包多个.o文件--->形成以lib开通.a结尾的静态库文件
利用make快速编译并且打包.o文件。
将头文件与静态库打包到一个目录中
使用静态库
让我们将mklib中的hello目录拷贝到uselib中。这其实就是将我们写的库发给别人用,别人只能看见我们的.o文件无法查看我们的原代码。
来到uselib目录中。
编辑一份拥有main()主函数的源文件。
使用库方法一
将.头文件放到,默认重新寻找头文件路径中路径--->/usr/include/
将静态库文件放到标准库文件目录下----> /lib64/
编译main.c源文件,执行-l(小写L)选项指明使用的库文件,头文件会主动再usr/include搜索,但是库文件不会,主要手动指明。
这里指明的时候只需要lib后的名字,并且不要带后缀.a
但是我们不要将直接将没经大量检验的头文件与库函数直接放到系统目录中,会污染系统头文件与库。毕竟人家的库函数经过数千遍的洗礼,得到的安全稳定的库。
所以我们使用另一个方法。
使用库方法二
刚刚我们再uselib得到目录,而需要的头文件和库都在里面,在编译的时候其实就可以直接使用该库的头文件。
编译main.c源文件的时候添加选项-L ;-I(大写的i) ;-l(小写的L)
-L:指明库函数路径
-I(大写的i):指明头文件搜索路径
-l(小写的L):指明库名称不要加lib前缀与.a后缀
别忘了 先删除系统库目录和头文件我们写的垃圾文件。
还有其他方法但是我们力推第二种方法,不会污染系统库目录与系统头文件目录。