| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux_动态库与静态库(制作与安装) -> 正文阅读 |
|
[系统运维]Linux_动态库与静态库(制作与安装) |
文章目录
1.静态库和动态库的定义,库的命名规则动静态库类似与“半个可执行程序” 程序在编译时会经历4步 静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库 动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。 库的命名规则: 2.静态库与动态库的优缺点Linux Centos下载C静态库命令sudo yum install glibs-static 生成静态链接C程序 -static注意:要安装C静态库 查看可执行程序依赖的动态库(ldd)静态库与动态库的特征①动静态程序运行过程
如果其他进程也需要使用C库,内存中没有加载C库,C库在静态可执行程序中,所以其他进程还要重新加载C库,浪费了内存空间 动态可执行程序 如果其他进程也需要使用C库,则只要调整其他进程的映射关系到已经在内存加载好的C库即可,不需要重复加载,节省内存空间 注意: ②动静态库的优缺点静态库 优点:1.与库无关,库已经链接在可执行程序中,删除库后仍可运行 动态库 优点:1.节省内存空间资源 3.打包.o文件制作动静态库打包静态库(ar -rc)ar -rc +静态库名称+依赖的.o文件
生成静态可执行程序(gcc -I+头文件路径-L+库路径-l+要链接的库名)注意:
安装自己的静态库(将库拷贝到系统路径下)
4.打包.o文件制作动态库(gcc -fPIC gcc -shared)注意:
这个mathlib_Dy就是我们生成的动态库 生成动态可执行程序(无法执行)生成动态可执行程序的思路和静态相同。指明头文件,库路径和库名称 这里发现gcc生成了可执行程序后并不能运行。
5.解决动态库生成的可执行程序无法运行①将依赖的库拷贝到系统路径下这种方法可以让操作系统在运行的时候找到其依赖的库 ②更改环境变量(LD_LIBRARY_PATH)LD_LIBRARY_PATH表示程序在运行时动态查找的路径 ③更新ldconfig配置Linux centos中/etc/ld.so.conf.d下保存的是配置文件,这些配置文件中是一些路径
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 20:02:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |