c/c++ 静态库与动态库

链接库

  • 二进制文件
  • 将源码转换成二进制格式的源代码
  • 加密

使用

  • 头文件
  • 制作出的库

静态库

  • 命名规则:libtest.a
    • lib
    • xxx -库的名字
    • .a
  • 制作步骤:
    • 源代码.c.cpp
    • 将.c文件生成.o
      • gcc a.c b.c -c
    • 将.o打包
      • ar  rcs静态库名   *.o
      • ar rcs libtest.a a.o b.o
        • ar - archive
  • 库的使用:
    • gcc test.c -I ./   -L./lib -lxxx -0 app
      • -L 指定库的路径
      • -l 指定库的名字去掉lib和.a

动态库 

  • 命名规则:
    • libxxx.so
  • 制作步骤:
    • 源代码生成.o
      • gcc a.c b.c -c -fpic(fPIC)
    • 打包 
      • gcc -shared a.o b.o -o libxxx.so
  • 库的使用:
    • 头文件 a.h
    • 动态库libtest.so
    • 参考函数声明编写测试程序 main.c
    • gcc main.c -I ./header/  -L ./lib/ -l test -o app
  • 动态库无法加载:
    • 使用环境变量:
      • 临时设置:
        • 在终端:export LD_LIBRARY_PATH=动态库路径 :$LD_LIBRARY_PATH
      • 永久设置:
        • 用户级别:修改 ~/.bashrc           source ~/.bashrc
        • 系统级别:/etc/profile  
          • source ~/.bashrc

猜你喜欢

转载自blog.csdn.net/weixin_41582705/article/details/81507086