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 可以进行查看
  • 相关阅读:
    拍照上传图片方向调整
    js 压缩上传图片
    js 各种循环语法
    本地Git仓库对照多个远程仓库
    nrm安装与配置使用
    面试常见问题
    NodeJs文件路径
    vscode添加智能提示(typings)
    前端常用的工具库
    DeepMask学习笔记
  • 原文地址:https://www.cnblogs.com/fandx/p/12456526.html
Copyright © 2011-2022 走看看