| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> gcc生成静态库和动态库及使用 -> 正文阅读 |
|
[C++知识库]gcc生成静态库和动态库及使用 |
目录 一、静态库与动态库的认识? 函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程 序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。 ? ?静态库和动态库的不同点在于代码载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积较大 。共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。在Linux系统中,可以用ldd命令查看一个可执行程序依赖的共享库。 二、生成静态库和动态库1、编写程序? 在虚拟机中编写程序,保存在home目录下。 ?1)程序sub1.c,用于计算b除以a的结果:
? 2)程序sub2.c,用于计算b减a的结果:
? ? 3)头文件?sub.h
? 4)主函数main1.c,输出两个函数执行后的结果:
? ?2、生成静态库1)将文件sub1.c与sub2.c编译生成目标文件。
? ? 可以看到已经生成目标文件.o: ?2)生成静态库: 静态库文件名的命名规范是以 lib 为前缀,紧接着跟静态库名,创建静态库用 ar 命令。
?3、生成动态库动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀 lib,但其 文件扩展名为.so。用 命令gcc 来创建动态库。
?三、使用静态库和动态库生成可执行文件1、使用静态库生成可执行文件
?此步可以生成可执行文件main1.a ?执行文件,输出结果:
?2、使用动态库生成可执行文件
?程序在运行时, 会在/usr/lib 和/lib 等目录中查找需要的动态库文件。若找到,则载入动态库,否则将提示类似上述错误而终止程序运行。因此我们需要将文件 libsub.so 复制到目录/usr/lib 中。
?之后执行文件,输出结果: ?四、静态库与动态库生成的文件大小比较使用语句查看内存空间
可以看到main1.a的大小为7436,main1.so的大小为7400。? ? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/24 2:56:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |