Linux——静态库和动态库的生成
1.vi test.h test.c main.c
2.gcc -c test.c
3.ar rcs libtest.a test.o 静态rcs可换成-r/ gcc -shared -fPIC -o libtest.so test.o 动态
4.gcc -o main main.c -L. -ltest
查看静态库中的.o文件:执行命令 ar -t libhycu.a
gcc -c -c表示只编译不链接
gcc -o test test.c libcrexr64.a
gcc -o test test.c -L. -lcrexr64 -static 将首先查找静态链接库
【1】生成静态库:
$ gcc -c func.c -o func.o
$ ar rcs libfunc.a func.o
$ gcc main.c -o main -static -L. -lfunc
$ ./main
【2】生成动态库:
$ gcc -fPIC -c func.c -o func.o
$ gcc -shared -o libfunc.so.1.0.0 func.o
$ ln -s libfunc.so.1.0.0 libfunc.so
$ gcc main.c -o main -L. -lfunc
$ export LD_LIBRARY_PATH=$(pwd)
$ ./main
如果将so文件copy到系统lib目录(如/usr/lib),则最后2步就不用了。
最后还有3个小知识:
【1】nm命令:列出目标文件或2进制文件的所有符号。
【2】ldd命令:列出为了使程序正常运行所需要的所有共享库。
【3】/etc/ld.so.conf文件:除了标准目录(/lib和/usr/lib)之外,链接器和加载器搜索共享库时要检查的其他目录,和这个文件相关的一个命令是:ldconfig 。
reference:
https://blog.csdn.net/idoit0204/article/details/2729171

浙公网安备 33010602011771号