当前位置: 首页 > article >正文

GNU/Linux - make 60s介绍

Learn make in 60 seconds.

A programmer needs a build system. 

想想你要手动输入编译命令编译每一个源文件,而且要正确添加和管理各个option,是很麻烦的。有各种用来帮助你build的工具,比如ant、make、maven、rake等。Make就是最通用的一种。

Basics of make in 60s!

使用make工具,需要借助Makefile,就是用来描述如何build你的程序的文本文件。

Make工具实际上主要关于Dependencies 和 rules。

比如你要编写和编译一个Hello.c的源文件,正常需要:

gcc -o hello hello.c

使用Makefile文件:(注意第二行开头是tab键) (我的环境下,makefile文件名也可以用)

hello:hello.c

    gcc -o hello hello.c

第一行顶格写是一个rule,第一个是要生成的target的文件名,冒号后面是文件名,表示依赖于hello.c文件。

然后在下面添加命令,用来进行编译操作。

运行make命令:

$ make hello

gcc -o hello hello.c

make命令会检查hello.c文件是否变化,即比二进制文件hello还新,来决定是否执行这个rule,即下面的编译操作,来生成二进制文件。

如果没有makefile,也可以执行make,默认操作是使用cc进行编译和参数同名的源文件:

$ make hello

cc     hello.c   -o hello

可以在dependency list中添加更多的源文件,也可以添加更多的rule,可以创建一个名为all的任务,  一般作为默认存在的任务,来执行所有rule。

all:hello

hello:hello.c test.c

    gcc -o hello hello.c

test.o: test.c

    gcc -c test.c -o test.o

一个好主意是,使用变量来表示后面可能会改变的东西,比如CC代表编译命令。

并添加一个clean的rule,来删除所有的生成文件。

CC=clang

all:hello

hello:hello.c test.c

    $(CC) -o hello hello.c

test.o: test.c

    $(CC) -c test.c -o test.o

clean:

    rm hello test.o

$ make clean

$ make all


http://www.kler.cn/a/422221.html

相关文章:

  • Python 数据分析用库 获取数据(二)
  • python基础知识(二)
  • python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250+个项目、26.6GB)
  • 【C++】C与C++基本区别以及构造函数
  • (一)Linux下安装NVIDIA驱动(操作记录)
  • [linux应用]emby媒体服务器软件简单部署和使用
  • vue引入并调用electron插件在网页报错Dynamic require of “electron“ is not supported
  • H3C OSPF实验
  • 大疆T100大载重吊运植保无人机技术详解
  • 怎么升级node版本
  • html+css网页设计 旅游 马林旅行社5个页面 兼容响应式
  • PyQt 中的无限循环后台任务
  • 统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
  • Linux中的常用基本指令(下)
  • 【NLP高频面题 - LLM架构篇】大模型使用SwiGLU相对于ReLU有什么好处?
  • Ambrus 游戏工作室将应对气候变暖与游戏变现完美结合
  • 开箱即用,阿里开源!专业AI 聊天界面工具包:Ant Design X
  • 【Dubbo03】消息队列与微服务之dubbo-admin 二进制与编译安装
  • Qt开源控件:图像刻度轴绘制器 (附源码)工程项目私信博主
  • 深度学习常见指标——FLOPs(搭配代码食用)
  • MySQL的连接类型
  • SpringMVC中的Handler、HandlerMapping、HandlerAdapter
  • 【青牛科技】D7413 高度集成的功率/电能监控模拟前端(AFE) IC,用于测量电能计量应用
  • 【Docker系列】Docker 中使用 Redis 配置文件的详细指南
  • FcaNet: Frequency Channel Attention Networks论文解读
  • CentOS7 虚拟机 双网卡绑定