不管是静态库还是动态库,其本质都是源文件。
一、静态库
**1、**首先编写需要制作静态库的.c源文件和头文件
简单举例如:编写两个源文件分别是:add.c和sub.c。add.c中实现一个函数,返回两个整形数的相加;sub.c文件中实现两个整形数相减的函数。
另外编写mylib.h头文件,写入两个源文件中所定义函数的声明。
**2、**然后使用gcc进行汇编,生成二进制文件.o结尾
gcc -c add.c sub.c
通过上面的命令生成 add.o与sub.o两个文件
**3、**使用ar命令打包第二部生成的.o文件生成以lib开头,以.a结尾的静态库文件libmyfun.a
ar rcs libmyfun.a add.o sub.o
注意:rcs是ar的运行参数,libmyfun.a是要生成静态库的名字,自己指定,但要以lib开头,以.a结尾。
二、动态库
1、同静态库步骤1。
2、使用gcc进行汇编,生成二进制文件.o结尾
gcc -c -fpic add.c sub.c
注意:这里想比制作静态库步骤2 多了-fpic
3、使用gcc命令进一步打包动态库文件
gcc -shared add.o sub.o -o libmyfun.so
**三、在使用使用自己制作的动态库编译可执行程序时,编译链接都没错,但是运行时,会出现找不到库文件的情况,**这是因为执行时搜索路径没有指定,默认的搜索路径并没有包含自己制作的动态库文件,所以在使用自己制作的动态库编译可执行文件时,可以添加 “-Wl,-rpath=.” 指定运行时的路径,或者把制作的动态库放到默认搜索路径下。