• gcc 动态库的编译和使用


    1.制作出来的库,如何给用户使用?

    1. 头文件 *.h
    2. 制作出来的库 *.so

    2.动态库的命名规则(三部分)

    lib + 自定义库的名字 + .so

    3.制作动态库的步骤

    1. 1.c文件生成.o
    2. [语法] gcc .c文件(原材料) -c -fpic(fPIC)
    3. gcc *.c [-I ./include] [-c] [-fpic(fPIC)]
    4. 2 使用gcc -shared,将.o文件打包,生成libXXX.so
    5. gcc [-shared *.o] [-o libXXX.so]

    4.动态库的使用

    1. 生成可执行文件
    2. gcc main.c -I ./include/ -L ./lib/ -lmycalc -o app
    3. -L 指定静态库的路径
    4. -lXXX XXX指定静态库的名字

    5. 为什么程序编译完成了之后,运行时确找不到so库呢

    使用ldd命令查看,运行时所需要链接的so库

    6. 如果找不到就需要配置so库路径

    1)export LD_LIBRARY_PATH=自定义动态库的路径
    (只能起到临时作用,关闭终端后失效)
    LD_LIBRARY_PATH : 指定查找共享库(动态链接库)时除了默认路径之外的其他路径,该路径在默认路径之前查找

    2)将上述命令写入home目录下的.bashrc文件中,保存后重启终端生效(永久)

    3)直接将动态库拷贝到user/lib的系统目录下(强烈不推荐!!)

    4)将libmy.so所在绝对路径追加入到/etc/ld.so.conf文件,使用sudo ldconfig -v 更新
     

    7、实测

    1. 1、gcc -fPIC -c *.c -I ../include
    2. 2、gcc -shared *.o -o libMyCalc.so -I ../include
    3. 3、mv libMyCalc.so ../lib
    4. 4、gcc main.c -o app -L lib -l MyCalc -I include
    5. 5、ldd app
    6. 6、export LD_LIBRARY_PATH=./lib

  • 相关阅读:
    小程序uView2.X框架upload组件上传方法总结+避坑
    vue flvjs 播放视频
    同步电路与跨时钟域电路设计2——多bit信号的跨时钟域传输(FIFO)
    【Linux】进程
    【初识算法】-Day1
    利用EFK对日志进行采集
    医学之细胞组织基因(完整)
    2023年AI生成音频研究报告
    MD5加密
    升降巡检机器人简介
  • 原文地址:https://blog.csdn.net/technologyleader/article/details/125507521