库文件:特定功能的实现,为用户提供一些调用接口
一,二者在不同系统上的后缀名
1,静态库:Windows: .lib Linxu: .a
2,动态库:Windows: .dll Linux: .so
二,静态库的实现:
1,功能代码编译成中间文件
实现的命令为:gcc -c *.c
2,命令 ar
实现的命令为:ar crv lib(库文件名).a *.o
3,使用
实现的命令为:gcc -o main main.c -L库的存储路径 -l库文件的名称
三,共享库的实现:
1,生成共享库
gcc -shared -fPIC -o lib(库文件名).so 源文件列表
2,使用
gcc -o main main.c -L库的存储路径 -l库文件的名称
3,通过LD_LIBRARY_PATH环境变量给操作系统指定加载共享库的路径
(1),直接在终端上修改
export LD_LIBRARY_PATH=库的路径
仅对当前终端有效,当终端关闭或者系统 重启,则设置的环境变量就不存在了
(2),修改配置文件 /etc/bashrc
export LD_LIBRARY_PATH=库的路径
(3),将生成的共享库存储到系统默认的搜索路径下 /lib /usr/lib
四,二者的区别
1,静态库类似与中间文件的集合,是不可执行的,共享库是一个不可执行的可执行文件。
2,静态库是在连接时,将静态库中的内容合并到最终的可执行文件中,所以程序执行时不需要依赖静态库。动态库是在程序运行时,由操作系统动态加载库文件到内存上去执行,最终生成的程序中根本没有库文件的内容
3,更新库中的功。如果是静态库。必须重新编译可执行文件
如果是共享库。只需要更新共享库就可以。
静态库和共享库(动态库)的实现
最新推荐文章于 2023-05-10 14:25:29 发布