在linux上创建库文件,静态库和动态库的区别

库文件:特定功能的实现,为用户提供一些调用接口
在linux上常见库文件
1.静态库
1)功能代码编译成中间文件

gcc -c *.c      //生成.o的中间文件

2)使用命令 ar

ar crv libxxxx.a *.o     //"libxxxx"为前缀lib+库文件的名称(静态库后缀名为.a)

3)生成可执行文件

gcc -o main main.c -L库的存储路径 -l库文件名称//库文件名称不用加lib前缀和.a的后缀

2.动态库(共享库)
1)生成共享库

gcc -shared -fPIC -o libxxxx.so 源文件列表   //共享库后缀名为.so

2)在生成可执行文件前需要进行环境变量的配置给系统指定加载共享库的路径,有三种方法可以使用(b,c方法需要root用户才可修改)
a.直接在终端上修改:

export LD_	LIBRARY_PATH=库的路径  //仅对当前终端有用,当关闭终端或系统重启,环境变量就不存在了

b.修改配置文件,编辑/etc/bashrc文件
在最后加上“export LD_ LIBRARY_PATH=库的路径”
c.将生成的共享库存储到系统默认的搜索路径下:
/lib文件夹中
3)生成可执行文件

gcc -o main main.c -L库的存储路径 -l库文件名称

静态库和动态库的区别
1.静态库类似于中间文件的集合,时不可执行的,动态库是不可执行的可执行文件
2.静态库是在连接时,将静态库的内容合并到最终的可执行文件中,程序执行时不需要依赖静态库。动态库是在程序运行时,由操作系统加载库文件到内存上去执行,最终生成的程序中没有库文件的内容
3.更新库中的内容后,如果是静态库,必须重新编译可执行文件。如果是动态库,只需要更新共享库就可以了
在linux上创建库文件,静态库和动态库的区别