Linux C编程之四 动态库(共享库)的制作(lib + 名字 + .so)
摘自:https://www.cnblogs.com/xuejiale/p/10788340.html
一、整体大纲

二、共享库的制作
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
Linux C编程之四 动态库(共享库)的制作(lib + 名字 + .so)的更多相关文章
- 有关 GCC 及 JNA 涉及动态库/共享库时处理库文件名的问题
动态库尤其是共享库在 Linux 环境下普遍存在库文件名包含版本号的情况,比如 Linux 环境下经常会发现一个共享库的真实文件名是 libfoo.so.1.1.0,而同时会有多个指向该真实库文件的软 ...
- 在Linux使用GCC编译C语言共享库
在Linux使用GCC编译C语言共享库 对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例 ...
- Yuchuan_Linux_C 编程之四动态库(共享库)制作
一.整体大纲 二.共享库的制作 1. 命名规则: lib + 名字 + .so 2. 制作步骤: 1) 生成与位置无关的代码 (生成与位置无关的.o) 2) 将.o打包成共享库(动态库) 3. ...
- linux 静态库和动态库(共享库)的制作与使用(注意覆盖问题)
一.linux操作系统支持的函数库分支 静态库:libxxx.a,在编译时就将库编译进可执行程序 优点:程序的运行环境中不需要外部的函数库 缺点:可执行程序大 动态库:又称共享库,libxxx.so, ...
- ndk学习9: 动态使用共享库
动态使用共享库函数 dll_main 环境介绍 续上节代码 目录结构: android.mk如下: LOCAL_PATH := $(call my-dir) include $(CLEA ...
- 在 Linux 使用 GCC 编译C语言共享库
对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例如一个数据库服务器的接口,就像MySQL ...
- Linux 中安装软件报缺少共享库文件的错误
linux 安装一些如软件 或者相关的模块时,经常报出缺少一些依赖包的 libxxx.so等的共享库文件 首先找到 该共享库文件 然后查看/etc/ld.so.conf 这个文件记录了编译时使用的动态 ...
- 链接(extern、static关键词\头文件\静态库\共享库)
原文链接:http://www.orlion.ga/781/ 一. 多目标文件的链接 假设有两个文件:stack.c: /* stack.c */ char stack[512]; int top = ...
- 1· linux命令:查看依赖的共享库 - ldd命令
今天使用qt链接mysql的时候,发现提示driver not load 而出现此错误一般是没有mysql驱动的原因,但是qt5.4已经提供了mysql驱动的 查看plugins/sqldrivers ...
- Linux多任务编程之四:exit()函数及其基础实验(转)
来源:CSDN 作者:王文松 转自Linux公社 exit()和_exit()函数 函数说明 创建进程使用fork()函数,执行进程使用exec函数族,终止进程则使用exit()和_exit() ...
随机推荐
- AtCoder Beginner Contest 372 补题记录
A - delete 题意: 输出删除字符串中 . 后的字符串 思路: 只输出字符串中不是 . 的字符 void solve() { string s = sread(); for(auto it:s ...
- protobuf 'NoneType' object has no attribute 'message_types_by_name'
最近爬一个网站,用的protobuf协议,报错查了半天.报错'NoneType' object has no attribute 'message_types_by_name',最后是因为protob ...
- Lecture2 Linear methods for regression, Optimization
书接上回,KNN模型有两个好处,一个是它很简单,另一个就是它既可以用来做回归,又可以用来做分类.但是坏处也很明显,就是它太粗暴了,基本上不怎么学习,只是对数据做一个简单的存储,等有了新的数据(测试数据 ...
- http 426 Upgrade Required
1.很久没做http接口了,都快不会了... 最近遇到一个奇葩的,调用http接口返回空,什么都没有,然后用工具测试,发现能返回消息,不过状态是500... 好奇之下就在代码里加个个取返回状态code ...
- DTMO 直播预告|Taier 的 Web 前端架构解析
原文链接:DTMO 直播预告|Taier 的 Web 前端架构解析 一.直播介绍 上两期,我们为大家分享了 Taier 入门及控制台的介绍,本期我们为大家分享 Taier 的 Web 前端架构介绍. ...
- 网络编程TCP UDP
网络编程 (1)什么是网络编程 网络编程是指通过编程语言在计算机之间建立通信的一种方式. 它是在互联网上进行数据传输的关键组成部分,使计算机能够相互通信.交换信息和共享资源. 网络编程涉及许多不同的技 ...
- 什么是CAE软件?哪个CAE软件好用?
CAE,全称Computer Aided Engineering,是指在工程领域结合计算机技术进行工程设计.分析.优化以及模拟仿真的应用.随着科技的发展,CAE技术在航空.汽车.电子.机械等领域越来越 ...
- 字节开源的AI Coding Agent —— Trae Agent深入浅出
1. 项目概述 从Cursor到Trae,从claude code到gemini cli,AI Coding都是火热的战场,现在字节开源了新的trae-agent(https://github.com ...
- 查看 SQL Server 当前的连接数
打开 SQL Server Management Studio(SSMS),连接到 SQL Server 实例. 在 SSMS 的"对象资源管理器"窗格中,展开服务器节点. 点击& ...
- C# 启动windows 服务(通过cmd管理员方式和winform 方式)
参考来源: https://www.jb51.net/article/32645.htm https://www.cnblogs.com/appskyy/p/11019647.html (主要就是这个 ...