【Linux】静态库和动态库
在Linux中,静态库和动态库是两种不同的库形式。
静态库(.a):在编译链接阶段,链接器会将静态库的内容直接复制到可执行文件中。因此,生成的可执行文件体积较大,但运行时不再依赖静态库文件。
动态库(.so):在编译链接阶段,链接器仅在可执行文件中记录对动态库的引用,动态库的内容不复制到可执行文件中。运行时,系统会加载动态库文件,并将其内容与可执行文件结合。
创建静态库:
gcc -c lib.c -o lib.o
ar rcs libstatic.a lib.o
创建动态库:
gcc -shared -fPIC -o libdynamic.so lib.c
链接静态库:
gcc main.c libstatic.a -o program
链接动态库:
gcc main.c -lmylib -L. -o program
在上述例子中,-lmylib
表示链接名为 libmylib.so
或 libmylib.a
的库文件,-L.
表示指定搜索库文件的路径为当前目录。
注意:在运行带有动态库的程序前,需要确保动态库在系统的标准库路径下或者在环境变量 LD_LIBRARY_PATH
指定的路径中。
评论已关闭