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() ...
随机推荐
- wso2~对接外部认证系统keycloak
在 WSO2 Identity Server 或 WSO2 API Manager 中,Identity Providers (身份提供者) 功能允许您将外部身份管理系统(如 Keycloak.Azu ...
- Excel批量插入checkbox的宏代码
来源网络,作为个人记录使用 手动在excel中添加勾选框不复杂,但是添加多个的时候会很麻烦,特别是在做数据分析时,选择框属性应该绑定在对应单元格下,使用普通的填充方式无法到达要求,因此使用VBA宏命令 ...
- Python实现http接口请求数据后,往RabbitMQ里面插入数据
python实现http接口请求数据服务后,往RABBITmq里面插入数据 import time import requests import pika import datetime base_u ...
- ps ef命令查询进程号pid
楼兰胡杨已经在<五分钟扫盲:25个工作中常用的Linux命令>分享了ps命令的简单使用方法,但是,写的过于笼统,这里详细介绍一下. 语法:ps -ef | grep process ...
- python C3算法
Python MRO C3算法是python当中计算类继承顺序的一个算法,从python2.3以后就一直使用此算法了. c3 linearization算法称为c3线性化算法 C3算法原理 首先定义几 ...
- 超实用!手把手教你Dify版本升级
很多情况下,我们需要升级 Dify 版本以获得新的功能和性能的提升,同时还能确保系统的安全性.稳定性和兼容性,从而更好地满足用户的需求. 那问题来了,怎么升级 Dify 版本呢? 接下来,我们以 Do ...
- Ceph集群网络性能测试
一.测试Ceph集群节点之间的网络性能 在ceph01节点上运行: [root@openstack01 ~]# iperf3 -s -p 6900 -------------------------- ...
- 学习php,整了一个php小马:无用小马项目介绍
主要实现了几个功能:1.嗅探文件.可以嗅探服务器上的文件 2.大马上传.可以拿来传大马,既可以选择直接上传文件,也可以选择保存到小马上传地址. 3.打算还加一些好用的功能,比如说修改php.ini之类 ...
- 江铃晶马 X 袋鼠云:搭建企业级数据资产中心,推进打造“智数晶马”
江铃集团晶马汽车有限公司(简称:晶马汽车)系江铃集团全资子公司,属集团六大整车企业之一.晶马汽车是以大.中.轻型客车(含新能源客车).乘用车(不含轿车).专用车等车型研发.生产.销售和服务为核心的整车 ...
- 替换GitLab的方案之Gitea
概述 官网:https://docs.gitea.com/zh-cn/ GitHub地址:https://github.com/go-gitea/gitea Gitea 是一个轻量级的 DevOps ...