Linux下动态库和静态库的生成命令

区别
1、静态库在编译的时候被加载,动态库在执行的之后被加载
2、加载静态库编译所生成的可执行文件比使用动态库的方式要大
3、静态库以.a为后缀,动态库以.so为后缀

 
静态库的制作:(以main.c调用add()函数为例)
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/ych/lib 将库所在的绝对路径添加至环境变量中(通过echo $LD_LIBRARY_PATH查看此环境变量的值;通过unset LD_LIBRARY_PATH来删除此环境变量里的值)
 (3)在/etc/ld.so.conf.d/下新建一个sudo vi my.conf文件,在里面写入库所在的绝对路径,保存并执行sudo ldconfig执行配置文件。
原文地址:https://www.cnblogs.com/uncertain/p/9328522.html