Linux C编程之四 动态库(共享库)的制作
一、整体大纲
二、共享库的制作
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编程之四 动态库(共享库)的制作相关推荐
- Linux系统编程 25 动态库和静态库 理论对比
Linux系统编程 25 动态库和静态库 理论对比 库分为两类 1.静态库 2.动态库(共享库) 静态库 是在可执行程序运行前就已经加入到执行码中, 成为执行程序的一部分 共享库(动态库) 执行程序启 ...
- Linux中静态库和动态库(共享库)的区别
1. 静态库和动态库的制作过程区别 1.1 静态库的制作过程 详见博客:Linux中静态库的制作与使用 1.2 动态库的制作过程 详见博客:Linux中动态库(共享库)的制作与使用 2. 静态库和动态 ...
- Linux中动态库(共享库)的制作与使用
0. 库的基本概念 见博客:Linux中静态库的制作与使用 0.1 动态库的工作原理 首先回忆一下静态库,使用静态库,在GCC进行链接时,会把静态库中代码打包到可执行程序中. 但是使用动态库,在GCC ...
- Linux下构建自己的C++共享库并配合pkg-config生成链接选项
Linux下构建自己的C++共享库并配合pkg-config生成链接选项 本文将以C++链表的新建.打印操作为例构建自己的共享库,并在实际调试代码时尝试使用.我们在做数据结构题时经常需要将链表打印出来 ...
- XCTF-攻防世界CTF平台-Reverse逆向类——56、tar-tar-binks(Mac平台下的64位动态链接共享库.dylib逆向)
目录标题 一.解压缩 二.查看文件 三.分析程序 四.程序主要逻辑: 五.逆向思路: 步骤一: 步骤二: 六.解密代码: 题目提供了两个文件flag.tar和libarchive.dylib 一.解压 ...
- 静态库与动态库(共享库)的联系与区别
提要: 1.静态库 静态库,也称作归档库(archive),按惯例它们的文件名都以.a结尾.比如,标准C语言函数库/usr/lib/libc.a和X11函数库/usr/ ...
- LINUX之静态库共享库
linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为 ...
- Linux系统编程-02(vim-gcc-动态库静态库)
00. 目录 00. 目录 01. 学习目标 02. 编辑器gedit介绍 03. 什么是vi(vim) 04. vim工作模式 4.1 命令模式 4.2 编辑模式 4.3 末行模式 05. vim教 ...
- linux安装与包管理(管理共享库)
静态和动态可执行程序 Linux 系统有两类可执行程序. 静态链接的 可执行程序包含它们所需的所有库函数.所有库函数都链接到可执行程序中.它们是完整的程序,不依赖于外部的库.静态链接程序的优点是它们不 ...
最新文章
- jquery 事件对象属性小结
- ArcGIS实验教程——实验十二:栅格数据投影变换
- iOS 图形编程总结
- 同步代码时忽略maven项目 target目录
- blender风格化草地
- 【期末复习】微机原理与接口技术
- CMOS模拟集成电路设计 吴金 学习记录2
- CCNA实验前准备(转)
- python中空格怎么打_191012 python3关于空格打印、赋值、+=符号的小坑
- 龙芯计算机价格,龙芯电脑目标售价有望逼近1000元
- 【SpringBoot】文件上传(基础上传、上传文件限制、上传多个文件)
- C语言练习---杨辉三角
- 80端口、443端口、8080端口、8000端口的区别
- Flink 异常 - 9.The heartbeat of TaskManager with id container timed out 分析与 Heartbeat 简介
- CentOS 8.1安装MySQL 8.0详解
- android简单音乐播放器(二)
- 杰理之内部flash【篇】
- 读锁(共享锁)写锁(独占锁)解析
- CSS浮动,平铺,鼠标状态
- Markdown(Typora)学习记录
热门文章
- 性能测试入门(二)转:JMeter基础之一 一个简单的性能测试
- WPF对象级资源的定义与查找
- lua-5.2.3编译问题记录quot;libreadline.so: undefined reference to `PC#39;quot;
- [LeetCode] Single Number
- HDU 4121 Xiangqi (算是模拟吧)
- qt 播放器 刷新 屏幕
- python商务图表_Excel职场商务图表高效制作
- centos 卸载docker_Spring Boot学习05_Docker卸载与安装
- 同济大学计算机直博,放弃直博浙江大学,选择保研同济大学!理性的他,做出这样的选择...
- Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航