1、静态库在编译的时候被加载,动态库在执行的时候被加载。
2、加载静态库编译所生成的可执行文件比使用动态库的方式要大。
3、静态库以.a为后缀,动态库以.so为后缀。
静态库的制作:
1.通过gcc -c add.c 生成目标文件 =》add.o
2.通过ar crs -o libadd.a add.o 生成静态库 =》libadd.a
3.通过gcc main.c -L. -ladd 链接静态库编译,生成可执行文件a.out
4.执行a.out即可
动态库的制作:
1.通过gcc -c add.c 生成目标文件 =》add.o
2.通过gcc -fPIC -shared -o libmyadd.so add.o 生成动态库文件 =》libmyadd.so
3.通过gcc main.c -L. -lmyadd 生成可执行文件 =》a.out
4,此时,运行找不到库文件,我们需要
(1)将libmyadd.so放到/usr/lib或/lib目录下
(2)通过export LD_LIBRARY_PATH=/home/linux/jn16081/day02/lib 将库所在的绝对路径添加至环境变量中(通过echo $LD_LIBRARY_PATH查看此环境变量的值;通过unset LD_LIBRARY_PATH来删除此环境变量里的值)
(3)在/etc/ld.so.conf.d/下新建一个my.conf文件,在里面写入库所在的绝对路径,保存并执行ldconfig执行配置文件。