2.3 静态库和动态库
库
1.静态库:在程序编译时加载静态库
优点:一旦程序链接完成就不再依赖原来的静态库
缺点:会使程序体积变大
2.动态库:在程序执行时加载
优点:大大减少程序的体积
缺点:程序的执行依赖于该动态库文件,若动态库不存在则程序无法执行
cd/usr/lib
制作静态库:
1.完成函数实现的源文件
2.将函数源文件编译成二进制文件
gcc -c filename.c -o filename.o
3.将二进制文件制作成库文件
ar crs lib库名.a filename.o
4.编译文件时可使用如下方式:
gcc main.c -o main -L. -l库名
制作动态库:
1.完成函数实现的源文件
2.函数源文件编译成二进制文件
gcc -c -fPIC filename.c -o filename.o
3.生成动态库
gcc -shared filename.o -o lib库名.so
4.将动态库放入到制定路径下:
cp lib库名.so /usr/lib
5.编译程序时可以加上该库
gcc main.c -o main -l库名
================================================================
main.c
1 #include "head.h" 2 int main() 3 { 4 int ret = 0; 5 ret = add(3,5); 6 printf("result is %d\n",ret); 7 8 return 0; 9 }
add.c
1 #include "head.h" 2 int add(int a,int b) 3 { 4 return a+b; 5 }
浙公网安备 33010602011771号