使用make
5.11 库的使用
代码的复用是计算机程序设计语言中的一个重要的概念。可以把编译好的目标文件模块统一放到一个库中,使得程序员可以在不同的程序中共享这些代码。
在Linux操作系统下,最后连接生成可执行文件时,如果链接的是一般的.o文件,则整个文件的内容都会被装入可执行文件中;如果链接的是库,则只是从库中找到程序中用到的变量和函数,将它们装入可执行文件中,那些在库中没有被程序所引用的变量和函数则不会被链接到最终的可执行文件。
所以,库可以节省大量的开发时间。在写较大程序时,最好把程序模块放在库中。
5.11.1 创建库和维护库
库中所有文件都叫作库的成员,可以时用以下格式来表示库的成员:
库名(成员名)
如:
mylib.a(mytest5_1.o)
用来表示库mylib.a中的一个文件mytest5_1.o。 #.a为库常用的扩展名
表示库成员的另一个格式:
库名((entry))
使用下面格式来说明库和成员的依赖关系:
库名:库名(成员名) 库名(成员名) ...
另一种格式说明依赖关系:
库名 .LIBRARY:成员名1 成员名2 ...
示例:维护一个名为mylib的库,makefile文件格式如下:
mylib:mylib(test5_1.o)
gcc -c test5_1.c
ar -ruv mylib test5_1.o
rm test5_1.o
mylib:mylib(test2.o)
gcc -c test2.c
ar -ruv mylib test2.o
rm test2.o
ar 命令的作用是从.o结尾的目标文件更新库,格式如下:
ar -ruv 库名 目标文件名
上面两段代码很相似,可以利用动态宏合并不同的文件,代码如下:
随机推荐
- 简单计算器 安卓 Android 作业
Android老师布置的课程作业——简单计算器 功能要求实现四则运算,参考界面见下图: 首先给各位老铁提供apk安装包以及项目压缩包,略表诚意~ github地址:https://github.com ...
- Android studio简单布局之view基本属性
本人属于自学上路,目前是在入门阶段,所以有些内容实质性比较少,请各位大佬多多包涵. 视图view的基本属性: layout_margin:定义视图与周围视图之间的空白距离 layout_padding ...
- Git:一、简介&安装Git 2.20.1
0.Git官网 1.简介 一个分布式版本控制系统. 作用:自动记录每次文件的改动,还可以让同伴协作编辑. 分布式与集中式相比优点在于:版本库在每个人自己电脑上,不需要一直在网上,也不用担心某一个数据库 ...
- Python之路【第一篇】:Python简介和入门
python简介: 一.什么是python Python(英国发音:/ pa θ n/ 美国发音:/ pa θɑ n/),是一种面向对象.直译式的计算机程序语言. 每一门语言都有自己的哲学: pyth ...
- SqlServer中的系统数据库
SqlServer中的系统数据库有五个,平时写代码不太关注,今天一时兴起研究了一下. 1. master 记录SQL Server系统的所有系统级信息,例如:登陆账户信息.链接服务器和系统配置设置.记 ...
- win7下建立超级隐藏账户
win7下建立超级隐藏账户 实验目的: 隐藏用户,不让管理员简单的发现 隐藏方法: 1.命令提示符中创建隐藏账户这种方法只能将账户在"命令提示符"中进行隐藏,而对于"计算 ...
- 经典排序算法 — C#版本(中)
归并排序比较适合大规模得数据排序,借鉴了分治思想. 归并排序原理 自古以来,分久必合合久必分. 我们可以这样理解归并排序,分-分到不能分为止,然后合并. 使用递归将问题一点一点分解,最后进行合并. 分 ...
- python获取set-cookies
python获取set-cookies #!/usr/bin/python3.4 # -*- coding: utf-8 -*- import requests url = "https:/ ...
- 【Linux基础】压缩和解压
Linux 常用的压缩与解压文件类型:.tar,.gz..tar.gz,.bz2..tar.bz2,.Z..tar.Z,.zip,.rar等. Linux 常用的压缩与解压缩命令有:tar,gzip. ...
- 【Android Studio安装部署系列】三十六、Android studio3.2使用过程中注意事项
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio升级到3.2之后,运行旧项目的时候出现了各种情况,特此记录下. 一.打包选项多了,一般情况下选择APK即 ...