目录
一,用gcc生成静态库和动态库
我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入,因此在程序运行时还需要动态库存在。
1.编写hello代码
先创建一个目录,再编写hello代码;
vi hello.h
vi hello.c
vi main.c
用gcc编译得到.o文件:gcc -c hello.c
2.静态库的创建
创建静态库的工具:ar
静态库文件名的命名规范是以lib为前缀,紧跟着跟静态库名,扩展名为.a。
静态库文件的命令:ar -crv libmyhello.a hello.o
静态库创建后,就是在程序中使用静态库:gcc -o hello main.c -L. -lmyhello
3.动态库的创建
创建动态库的工具:gcc
动态库文件的命令:gcc -shared -fPIC -o libmyhello.so hello.o
动态库创建后,就是在程序中使用动态库:gcc -o hello main.c -L. -lmyhello
在运行可执行文件hello时会出现差错,此时输入:mv libmyhello.so/usr/lib
这时又会出现mv: cannot move 的提示,表示没有执行权限,可以使用sudo解决
此时输入:sudo mv libmyhello.so/usr/lib
最后运行hello:./hello
二,总结
在使用静态库和动态库后,经过对比能明显看出两种的差别,静态库要比动态库小很多,生成的可执行文件大小也存在较小的差别。多加练习总能掌握如何生成静态库和动态库。