动态库、静态库
介绍
在Windows平台和linux平台存在着大量的库。本质上说库是一种可执行的二进制代码,可以被操作系统直接载入内存。
linux下的库有两种:静态库和共享库(动态库)。二者的不同在于被载入代码被载入的时刻不同。
静态库在代码编译时会被链接到目标代码中。
动态库在程序编译时并不会被谅解到目标代码中,而是在程序运行时才被载入。
库文件的生成
静态库的后缀是.a,动态库的后缀是.so。
使用说明
正常编译
gcc -c test1.c test2.c test3.c main.c
gcc test1.o test2.o test3.o main.o -o test
生成静态库
gcc -c test1.c test2.c test3.c
ar -r libtest.a test1.o test2.o test3.o
gcc -o test main.c libtest.a
生成动态库
gcc test1.c test2.c test3.c -fPIC -shared -o libtest.so
gcc main.c -L. -ltest -o test
gedit /etc/ld.so.conf 在最后一行添加 /home/fanhui/test
执行ldconfig
-shared表明产生共享库,而-fPIC则表明使用地址无关代码