从编程的角度来讲,库文件通常被分为静态库文件和动态库文件,其目的在于将部分代码封装在一起编译后供自己或他人调用,好处在于编译后的库文件看不到源代码,可保密,同时不会因为不小心修改了函数而出问题,便于维护。但是二者之间存在一定的差异。
1.静态库:
静态库在Windows操作系统中是.lib文件,在Linux下是.a文件,相当于中间(.o)文件的集合,是在程序链接时使用,讲静态库中的文件直接合成到最后的可执行文件中去,程序运行时,则不再需要静态库的支持。在linux下静态库的生成及使用方法如下:
(1)将所有的源文件编译生成中间文件命令如下:
gcc -c *.c
(2)生成libxxx.a文件(这里的lib是必须有的,与后面的自定义的一起构成库文件名称)命令如下:
ar crv libxxx.a *.o
(3)静态库的使用
gcc -o main main.c -L路径 -l库名(这里的main.c是自己的代码名称)
2.动态库(共享库)
动态库在Windows操作系统中是.dll文件,在Linux操作系统下是.so文件,动态库的使用是在使用动态库的程序运行起来后,动态地将动态库加载到内存上去执行,可以总结为不可执行的可执行文件。在Linux下动态库的生成及使用方法如下:
(1)生成libxxx.so文件(这里的lib是必须有的,与后面的自定义的一起构成库文件名称)命令如下:
gcc -shared -fPIC -o libxx.so *.c
(2)动态库的使用
gcc -o main main.c -L路径 -l库名(这里的main.c是自己的代码名称)
(3)使用动态库的程序在运行时,需要单独搜索并加载动态库文件,做法如下:
a.将动态库拷贝到/lib或者/usr/lib任意一个路径下
b.设置环境变量
c.修改配置文件
区分静态库和动态库除了以上说的几点外,还有一点可以很快区分。静态库删除后程序无法使用,而动态库删除之后程序照样可以正常运行。
浅析静态库和动态库的区别及linux下二者的生成和使用
最新推荐文章于 2024-07-10 10:55:23 发布