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

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

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

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

3.制作动态库的步骤

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

4.动态库的使用

生成可执行文件
gcc main.c -I ./include/ -L ./lib/ -lmycalc -o app    -L  指定静态库的路径-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、gcc -fPIC -c *.c -I ../include2、gcc -shared *.o -o libMyCalc.so -I ../include3、mv libMyCalc.so ../lib4、gcc main.c -o app -L lib -l MyCalc -I include5、ldd app6、export LD_LIBRARY_PATH=./lib

gcc 动态库的编译和使用相关推荐

  1. Linux上静态库和动态库的编译和使用

    linux上静态库和动态库的编译和使用(附外部符号错误浅谈) 这就是静态库和动态库的显著区别,静态库是编译期间由链接器通过include目录找到并链接到到可执行文件中,而动态库则是运行期间动态调用,只 ...

  2. Linux下静态库和动态库的编译连接

    http://blog.sina.com.cn/s/blog_4090ba590100t3nu.html .a文件 gcc -c test.c  ar rc libtest.a test.o  ran ...

  3. go语言动态库的编译和使用

    本文主要介绍go语言动态库的编译和使用方法,以linux平台为例,windows平台步骤一样,具体环境如下: $ echo $GOPATH /media/sf_share/git/go_practic ...

  4. C语言 gcc 动态库

    动态库编译例子 代码准备 |-- fn | |-- add.c | `-- sub.c |-- h | `-- head.h |-- lib `-- test.c add.c内容 int add(in ...

  5. Linux 动态库的编译和使用

    1. 动态链接库简介 动态库又叫动态链接库,是程序运行的时候加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序.动态库是目标文件的集合,目标文件在动态库中的组织方式是按特殊的方式组 ...

  6. gcc动态库fPIC和fpic编译选项差异介绍

    作者以前并没有特别留意fPIC和fpic之间的差别,最近在aarch64服务器上编译遇到的一个问题,让自己好好的查询了一些资料,或许平常的开发人员并不容易遇到它,但愿对有缘的读者有一定帮助. 1)出动 ...

  7. 多层动态库的编译及使用

    编程之路刚刚开始,错误难免,希望大家能够指出. 假如生成一个动态库A,然后动态库B的生成又调用了动态库A,那么凡是调用了动态库B的程序或者库,需要既链接动态库A也要链接动态库B,这也是动态库最重要的特 ...

  8. c 调用java的dll_Windows下java调用c的dll动态库--Dev_Cpp编译c生成dll

    1.eclipse下建立一个HelloJNI.java内容如下: package JNI; public class HelloJNI { static { System.out.println(&q ...

  9. java 使用c .dll_Windows下java调用c的dll动态库--Dev_Cpp编译c生成dll

    1.eclipse下建立一个HelloJNI.java内容如下: package JNI; public class HelloJNI { static { System.out.println(&q ...

最新文章

  1. KDD2020接受论文列表已公开!338篇优秀论文汇总!
  2. jquery 验证控件
  3. CentOS 7 + Hadoop3 伪分布式集群配置
  4. c++中的变量作用范围
  5. java课程设计 成绩_Java课程设计—学生成绩管理系统(201521123004-林艺如)
  6. 2017/5 JavaScript基础9 --- 闭包、作用域
  7. 在ubuntu下各种格式软件安装及常用命令
  8. IDEA的debug方法头坑
  9. GDB调试精粹及使用实例
  10. Linux 实现与宿主机共享文件夹 Centos7
  11. 《3D数学基础:图形与游戏开发 》
  12. 学校多媒体讲台计算机怎么开,学校教室多媒体使用说明.PPT
  13. GIS软件——ArcGIS去除影像黑边
  14. 三行代码实现`年月日`的弹出控件
  15. 阿里云大幅降低CDN价格网宿蓝汛跟不跟?
  16. JAVA idea建包的时候com.不分开
  17. Flutter 银行卡隐藏号码,只显示后四位。
  18. ~ 如何用C++自制一个日麻游戏 ~ 概述
  19. 基于Springboot+Mybatisplus+Vue的科研项目管理系统
  20. [全流程案例]壮汉:3.头部雕刻(ZBrush)

热门文章

  1. find命令及文件名后缀
  2. 7. 可执行程序的装载
  3. 几款实用的百度在线工具
  4. 机器人工程专业的教育与考核
  5. 【论文笔记】Copy-Paste研读
  6. Django计算机毕业设计爱心宠物中心管理系统(程序+LW)Python
  7. 宁波中软国际实习日记(一):SSM框架开发环境搭建
  8. 亚马逊欧洲站做铺货模式需要注意什么?选品、选品、选品
  9. php图片怎么向上,php图片水印
  10. C# 通过指针实现的fastcopy的代码