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