一、库是什么

库是二进制格式的源代码(二进制加密)

二、库的使用

  • 头文件
  • 制作的库文件

三、静态库的制作和使用

  1. 命名规则 libxxx.a
  2. 制作步骤
    • 准备源代码文件
    • 将源代码文件生成 .o 文件 gcc -c *.c
    • 将 .o 文件打包(archivear rcs libxxx.a *.o
    • 查看 lib 文件 nm libxxx.a
  3. 库的使用 gcc main.c -I./include -L ./lib -lmyCalc -o app
    • -L: 库的路径
    • -l: 库的名称(去掉 lib 前缀和 .a 后缀)

四、动态库的制作和使用

  1. 命名规则 libxxx.so
  2. 制作步骤
    • 准备源代码文件
    • 将源代码文件生成 .o 文件 gcc -c -fpic *.c 或者 gcc -c -fPIC *.c
    • 将 .o 文件打包 gcc -shared -o libxxx.so *.o
  3. 库的使用
    • gcc main.c -I ./include -L ./lib -l mycalc -o app2
  4. 动态库无法加载(4 种方式)
    • 使用临时环境变量设置:export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
    • 修改用户级别的配置文件:打开 ~/.bashrc文件,将 export LD_LIBRARY_PATH=~/lib (注:等号两边不要有空格)添加到文件最后,重启 bash 终端或 source ~/.bashrc
    • 修改系统级别的配置文件:/etc/profile,重复上面的步骤
    • 更新 /etc/ld_so_cache 文件列表
      • 将库的绝对路径(注:必需是绝对路径,不能使用类似 ~ 代替)添加到配置文件中 etc/ld.so.conf
      • 执行 sudo ldconfig -v 命令
    • 拓展,使用函数调用:dlopen、dlclose、dlsym
    • Linux动态库路径查找顺序:
      Linux动态库路径查找顺序

五、其它命令

  1. file app2
    file命令
  2. ldd app2
    ldd命令