一、整体大纲

二、共享库的制作

1. 命名规则:

lib + 名字 + .so

2. 制作步骤:

1) 生成与位置无关的代码 (生成与位置无关的.o)
    2) 将.o打包成共享库(动态库)

3. 发布和使用共享库:

4. 解决程序执行时动态库无法被加载的问题:

1)放到系统的库目录 中 -- 不允许使用

2)临时测试

环境变量: LD_LIBRARY_PATH=将动态库的路径设置给该变量
          将设置的值, 导入到系统环境变量中: export LD_LIBRARY_PATH
          当终端关闭, 设置会失效

3)不常用的方法(永久设置):

在家目录的 .bashrc文件 中添加一句话: export LD_LIBRARY_PATH=动态库目录的绝对路径
           .bashrc修改完成, 需要重启终端

4)修改配置文件

a. 需要找动态连接器的配置文件 --  /etc/ld.so.conf
          b. 动态库的路径写到配置文件中 -- 绝对路径
          c. 更新 -- sudo ldconfig -v

5. 优缺点:

三、动态库的制作示例  

动态库的制作示例请看博客:https://www.cnblogs.com/xuejiale/p/10741311.html

转载于:https://www.cnblogs.com/xuejiale/p/10788340.html

Linux C编程之四 动态库(共享库)的制作相关推荐

  1. Linux系统编程 25 动态库和静态库 理论对比

    Linux系统编程 25 动态库和静态库 理论对比 库分为两类 1.静态库 2.动态库(共享库) 静态库 是在可执行程序运行前就已经加入到执行码中, 成为执行程序的一部分 共享库(动态库) 执行程序启 ...

  2. Linux中静态库和动态库(共享库)的区别

    1. 静态库和动态库的制作过程区别 1.1 静态库的制作过程 详见博客:Linux中静态库的制作与使用 1.2 动态库的制作过程 详见博客:Linux中动态库(共享库)的制作与使用 2. 静态库和动态 ...

  3. Linux中动态库(共享库)的制作与使用

    0. 库的基本概念 见博客:Linux中静态库的制作与使用 0.1 动态库的工作原理 首先回忆一下静态库,使用静态库,在GCC进行链接时,会把静态库中代码打包到可执行程序中. 但是使用动态库,在GCC ...

  4. Linux下构建自己的C++共享库并配合pkg-config生成链接选项

    Linux下构建自己的C++共享库并配合pkg-config生成链接选项 本文将以C++链表的新建.打印操作为例构建自己的共享库,并在实际调试代码时尝试使用.我们在做数据结构题时经常需要将链表打印出来 ...

  5. XCTF-攻防世界CTF平台-Reverse逆向类——56、tar-tar-binks(Mac平台下的64位动态链接共享库.dylib逆向)

    目录标题 一.解压缩 二.查看文件 三.分析程序 四.程序主要逻辑: 五.逆向思路: 步骤一: 步骤二: 六.解密代码: 题目提供了两个文件flag.tar和libarchive.dylib 一.解压 ...

  6. 静态库与动态库(共享库)的联系与区别

    提要: 1.静态库                 静态库,也称作归档库(archive),按惯例它们的文件名都以.a结尾.比如,标准C语言函数库/usr/lib/libc.a和X11函数库/usr/ ...

  7. LINUX之静态库共享库

    linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为 ...

  8. Linux系统编程-02(vim-gcc-动态库静态库)

    00. 目录 00. 目录 01. 学习目标 02. 编辑器gedit介绍 03. 什么是vi(vim) 04. vim工作模式 4.1 命令模式 4.2 编辑模式 4.3 末行模式 05. vim教 ...

  9. linux安装与包管理(管理共享库)

    静态和动态可执行程序 Linux 系统有两类可执行程序. 静态链接的 可执行程序包含它们所需的所有库函数.所有库函数都链接到可执行程序中.它们是完整的程序,不依赖于外部的库.静态链接程序的优点是它们不 ...

最新文章

  1. jquery 事件对象属性小结
  2. ArcGIS实验教程——实验十二:栅格数据投影变换
  3. iOS 图形编程总结
  4. 同步代码时忽略maven项目 target目录
  5. blender风格化草地
  6. 【期末复习】微机原理与接口技术
  7. CMOS模拟集成电路设计 吴金 学习记录2
  8. CCNA实验前准备(转)
  9. python中空格怎么打_191012 python3关于空格打印、赋值、+=符号的小坑
  10. 龙芯计算机价格,龙芯电脑目标售价有望逼近1000元
  11. 【SpringBoot】文件上传(基础上传、上传文件限制、上传多个文件)
  12. C语言练习---杨辉三角
  13. 80端口、443端口、8080端口、8000端口的区别
  14. Flink 异常 - 9.The heartbeat of TaskManager with id container timed out 分析与 Heartbeat 简介
  15. CentOS 8.1安装MySQL 8.0详解
  16. android简单音乐播放器(二)
  17. 杰理之内部flash【篇】
  18. 读锁(共享锁)写锁(独占锁)解析
  19. CSS浮动,平铺,鼠标状态
  20. Markdown(Typora)学习记录

热门文章

  1. 性能测试入门(二)转:JMeter基础之一 一个简单的性能测试
  2. WPF对象级资源的定义与查找
  3. lua-5.2.3编译问题记录quot;libreadline.so: undefined reference to `PC#39;quot;
  4. [LeetCode] Single Number
  5. HDU 4121 Xiangqi (算是模拟吧)
  6. qt 播放器 刷新 屏幕
  7. python商务图表_Excel职场商务图表高效制作
  8. centos 卸载docker_Spring Boot学习05_Docker卸载与安装
  9. 同济大学计算机直博,放弃直博浙江大学,选择保研同济大学!理性的他,做出这样的选择...
  10. Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航