linux的常用操作——静态库

1.静态库的制作

1.1静态库的命名

\qquad静态库一律使用lib打头,静态库名为:lib+静态库的名字+.a。比如:libmylibrary.a,这里面lib和.a是必须要有的。使用nm命令可以查看静态库。

nm 静态库名
1.2静态库的制作步骤

\qquad第一步:将.c文件生成.o文件,比如将hello.c转变为hello.o文件。

gcc -c hello.c -o hello.o

\qquad或者

gcc hello.c -c

\qquad第二步:使用ar将生成的.o文件打包

ar rcs 静态库的名字 生成的所有.o文件
1.3发布和使用静态库
gcc filename.c 静态库的路径/静态库名 -o 可执行文件名 -I 头文件的路径

\qquad或者

gcc filename.c -I 头文件路径 -L 静态库路径 -l 静态库名 -o 可执行文件名

2.静态库的优缺点

2.1静态库的优点

\qquad 1.发布的程序,即编译完成后的可执行文件,不再需要库函数。
\qquad 2.加载库的速度快

2.2静态库的缺点

\qquad 1.库被打包到应用程序中,导致应用程序体积变大。
\qquad 2.库如果发生了改变,需要重新编译。

3.静态库制作实例

  1. 源代码目录
zhaoxr@zhaoxr-ThinkPad-E450:~/linux$ tree
.
├── head
│   ├── add.h
│   └── mul.h
├── lib
│   ├── main.c
│   └── mul.c
└── source└── add.c3 directories, 5 files
  1. 生成静态库

这里的静态库不包含主函数的.c文件,只是把实现打包成静态库,

首先将功能模块的.c文件编译为.o文件,

zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ gcc -c add.c -o add.o
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ gcc -c mul.c -o mul.o
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ tree
.
├── add.c
├── add.o
├── mul.c
└── mul.o0 directories, 4 files

然后生成静态库

zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ ar rcs libmylib.a add.o mul.o
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ tree
.
├── add.c
├── add.o
├── libmylib.a
├── mul.c
└── mul.o0 directories, 5 files
  1. 生成可执行文件
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/source$ gcc main.c ../lib/libmylib.a -o app -I ../head/
zhaoxr@zhaoxr-ThinkPad-E450:~/linux$ tree
.
├── head
│   ├── add.h
│   └── mul.h
├── lib
│   ├── add.c
│   ├── add.o
│   ├── libmylib.a
│   ├── mul.c
│   └── mul.o
└── source├── app└── main.c3 directories, 9 files
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/source$ ./app 
a+b=19,a*b=90

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯 回文日期

模拟 n int(input())def check(x):m int(x[:2])d int(x[2:4])x int(x)if 1<m<12:if m 2:if (x%40 and x%100!0) or x%4000:if d<29:return Trueelse:return Falseelse: if d<28:return Trueelse:return Falseif m in [1,3,5,7,8,10,12]:if d<31:return Tr…

因果推断研究获2021诺贝尔经济学奖

来源&#xff1a;集智俱乐部 北京时间2021 年 10 月 11 日 17 时许&#xff0c;2021 年诺贝尔经济学奖&#xff0c;授予了三位经济学家——David Card因为对“对劳动经济学的实证研究贡献”而获得一半奖金&#xff0c;Joshua D. Angrist和Guido W. Imbens因“对因果关系分析的方…

Leetcode 82. Remove Duplicates from Sorted List II

利用一个虚拟头节点,和维护一个前置节点. # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val x # self.next Noneclass Solution:def deleteDuplicates(self, head: ListNode) -> ListNode:if not head o…

【计算机网络复习】1.1.1 概念、组成、功能和分类

概念、组成、功能和分类二、功能三、组成四、分类计算机网络&#xff1a;是一个将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。 计算机网络是互连的、自治的计算机集合。 互连 — 互…

linux的常用操作——共享库

1.共享库的命名规则 \qquad共享库&#xff0c;即动态库。库名&#xff1a; lib库名.so 2.共享库的制作 2.1生成与位置无关的.o文件 gcc -fpic -c filename.c -I 头文件路径2.2生成共享库 gcc -shared -o 共享库名 要打包的.o文件 -I 头文件路径2.3生成可执行文件 gcc file…

因果表征学习最新综述:连接因果科学和机器学习的桥梁

来源&#xff1a;集智俱乐部作者&#xff1a;蔡心宇审校&#xff1a;龚鹤扬、陆超超编辑&#xff1a;邓一雪论文题目&#xff1a;Towards Causal Representation Learning论文地址&#xff1a;https://arxiv.org/abs/2102.11107这篇名为Towards Causal Representation Learning…

【计算机网络复习】1.1.2 标准化工作及相关组织

标准化工作及相关组织一、标准化工作二、标准化工作的相关组织一、标准化工作 标准 法定标准&#xff1a;由权威机构指定的正式的、合法的标准&#xff08;如OSI&#xff09;事实标准&#xff1a;某些公司的产品在竞争中占据了主流&#xff0c;时间长了&#xff0c;这些产品中…

推荐几个练习听力不错的国外网站

http://www.uptoten.com/ 是美国针对学前教育&#xff08;0到10岁&#xff09;的听力网站&#xff0c;主题非常丰富&#xff0c;拥有大量英文歌曲、卡通片、绘画、游戏等栏目&#xff0c;启发儿童在艺术、健康、语言、社会、科学多元思维能力&#xff0c;在好玩又有趣的氛围下&…

linux的常用操作——程序调试gdb

1.如何在linux下调试程序&#xff1f; \qquad在进行程序编译时&#xff0c;如果需要调试&#xff0c;那么需要加入调试指令。 gcc filename.c -o 可执行文件名 -g\qquad对程序进行调试 gdb 可执行文件名2.调试的基础操作 \qquad在gdb的界面下的操作&#xff1a;查看 l #默认…

这种记忆技术在弯曲时更好?

A new kind of flexible phase change memory is tested while bent around a 4-millimeter-diameter rod. A.I. KHAN AND A. DAUS来源&#xff1a;IEEE电气电子工程师新的相变存储器需要更少的能量&#xff0c;部分原因是它是建立在塑料上的&#xff1f;要想让粘贴式显示器、…

【计算机网络复习】1.1.3 速率相关的性能指标

速率相关的性能指标一、速率二、带宽三、吞吐量一、速率 速率即数据率或称数据传输率或比特率。 比特 &#xff1a; 1/0 位 连接在计算机网络上的主机在数字信道上传送数据位数的速率。 单位是b/s&#xff0c;kb/s&#xff0c;Mb/s&#xff0c;Gb/s&#xff0c;Tb/s 速率 …

linux的常用操作——makefile

1.makefile是什么&#xff1f; \qquadmakefile是linux下的一个代码管理工具。 2.makefile文件的命名 \qquadmakefile的命名&#xff1a;首字母大写即&#xff1a;Makefile&#xff1b;或者全部小写&#xff1a;makefile。 3.makefile文件的规则 \qquad规则三要素&#xff1a;…

接口与内部类

1.什么是接口(B) 接口是一种引用数据类型&#xff0c;用interface声明&#xff1b;当出现interface便可判断为接口。 形式&#xff1a;【修饰符】 interface 接口名称(public interface Pepar{ }) 接口可声明属性&#xff0c;且属性都默认为static final 1 public interface Pa…

深度学习为何泛化的那么好?秘密或许隐藏在内核机中

来源&#xff1a;AI科技评论编译&#xff1a;杏花编辑 &#xff1a;青暮在机器学习领域&#xff0c;人工神经网络逐年扩大规模&#xff0c;并取得了巨大成功&#xff0c;但同时它也制造了一个概念性难题。当一个名为 AlexNet网络在2012年赢得年度图像识别比赛时&#xff0c;大约…

linux的常用操作——压缩和解压缩

1.gzip和bzip2 \qquadgzip和bzip2的处理解压和压缩的功能并不强大&#xff0c;一是&#xff1a;不能处理打包压缩&#xff1b;二是&#xff1a;gzip压缩不保留原文件&#xff0c;bzip2 -k 要压缩的文件可以保留原文件&#xff1b;三是&#xff1a;只能压缩文件&#xff0c;不能…

【计算机网络复习】1.1.4 时延、时延带宽积、RRT和利用率

时延、时延带宽积、RRT和利用率一、时延二、时延带宽积三、往返时延RTT一、时延 传输时延&#xff08;发送时延&#xff09;&#xff1a;数据从结点发送到链路上的时间 传输时延 数据长度/网络带宽&#xff0c;由网络带宽、数据长度决定 传播时延&#xff1a;信号从链路的一端…

华为汪涛:无线网络未来十年十大趋势

来源&#xff1a;通信产业网2021全球移动宽带论坛&#xff08;Global MBB Forum&#xff09;期间&#xff0c;华为常务董事、ICT基础设施业务管理委员会主任汪涛发表了题为“走向智能世界2030&#xff0c;无线网络未来十年十大趋势”的主题演讲。华为常务董事、ICT基础设施业务…

mount 挂载光盘

1 查看光盘情况 ls_l /dev|grep cdrom 2 创建光盘挂载点 3 执行mount 命令 mount -t iso9660 /dev/sr2 /media 转载于:https://www.cnblogs.com/CandiceW/p/10773865.html

【计算机网络复习】1.2.1 分层结构、协议、接口、服务

分层结构、协议、接口、服务一、 分层结构一、 分层结构 分层的基本原则 1、各层之间相互独立&#xff0c;每层只实现一种相对独立的功能。 2、每层之间界面自然清晰&#xff0c;易于理解&#xff0c;相互交流尽可能少。 3、结构上可分隔开。每层都采用最合适的技术来实现。…