zoukankan      html  css  js  c++  java
  • 动态库的制作方式以及出错的解决方案

    动态库的生成

    1. 将.c文件生成.o文件,然后在生成与位置无关的代码(-fPIC)

      # 生成动态库
      gcc -c add.c -o add.o -fPIC 
      
    2. 使用gcc -shared 制作动态库

      # 制作动态库
      gcc -shared lib库名.so add.o sub.o div.o
      
    3. 编译可执行程序的时候,指定所使用的动态库。 -l:指定库名 -L:指定库路径

      # 编译可执行程序
      gcc test.c -o a.out -lmymath -L./lib
      
    4. 运行可执行程序 ./a.out 出错

      原因:

      • 链接器:工作在链接阶段
      • 动态链接器:工作与程序运行阶段,工作时需要提供动态库所在目录路径

      解决方式

      1. 通过环境变量 export LD_LIBRARY_PATH = 动态库路径,重启终端的时候会失效
      2. 永久生效,可以将export LD_LIBTRARY_PATH写入到.bashrc中,每次开启都会自动运行
      3. 拷贝自定义动态库到/lib里面(标准c库所在的目录位置)
      4. 配置文件法:
        • 修改/etc/ld.so.conf
        • 写入动态库的绝对路径 保存
        • sudo ldconfig -v 使配置文件生效
        • 使用ldd a.out 可以进行查看
  • 相关阅读:
    023 AQS--JUC的核心
    022 Future接口
    021 Callable接口
    020 线程的综合考虑
    019 线程协作
    命令,lldb,llvm,gdb,gcc,
    @class,import,
    arc,自动引用计数,
    写在哪里,
    40岁生日,
  • 原文地址:https://www.cnblogs.com/fandx/p/12456526.html
Copyright © 2011-2022 走看看