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

posted @ 2019-07-12 21:00  BingoC  阅读(482)  评论(0)    收藏  举报