Linux环境下写一个 简单的 makefile

2024-02-05 12:48

本文主要是介绍Linux环境下写一个 简单的 makefile,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当我们有多个源程序时,用gcc每个都编译,这样我们没有修改过的源文件也得重新编译一次,很麻烦,这事写makefile就派上了用场,可以大大的提高我们的编码和调试速度。为此:

1.计划写三个函数及两个头文件,分别是:

main.c

[cpp]  view plain copy
  1. #include "sum.h"  
  2. #include "max.h"  
  3. int main(int argc,char **agrv)  
  4. {  
  5.     int a,b;  
  6.     sum_print();  
  7.     printf("Please input two number:/n");  
  8.     scanf("%d,%d",&a,&b);  
  9.     max_print(a,b);  
  10. }  

sum.h

[cpp]  view plain copy
  1. /*sum.h*/  
  2. #ifndef SUM_H  
  3. #define SUM_H  
  4. void sum_print();  
  5. #endif  

sum.c

[cpp]  view plain copy
  1. #include "sum.h"  
  2. void sum_print()  
  3. {  
  4. int i,sum=0;  
  5. for(i=0;i<10;i++)  
  6.     {  
  7.         sum+=i;  
  8.     }  
  9. printf("Sum=%d/n",sum);  
  10. }  

max.h

[cpp]  view plain copy
  1. #ifndef MAX_H  
  2. #define MAX_H  
  3. void max_print(int a,int b);  
  4. #endif  

max.c

[cpp]  view plain copy
  1. #include "max.h"  
  2. void max_print(int a,int b)  
  3. {  
  4.     if(a>b)  
  5.     {  
  6.         printf("The Max Number is:%d/n",a);  
  7.     }  
  8.     else  
  9.     {  
  10.         printf("The Max Number is:%d/n",b);   
  11.     }  
  12. }  

2.编写makefile文件,文件名为 makefile,makefile内容如下:

[cpp]  view plain copy
  1. main: main.o sum.o max.o  
  2.     gcc -o main main.o sum.o max.o  
  3. main.o: main.c sum.h max.h  
  4.     gcc -c main.c  
  5. sum.o: sum.c sum.h  
  6.     gcc -c sum.c  
  7. max.o: max.c max.h  
  8.     gcc -c max.c  

3.进入终端;

[lxiron@FedoraOS myfolder]$ make

4.按理应该输入make makefile, 但默认输入 make时,会自动在该目录下寻找makefile文件。

[lxiron@FedoraOS myfolder]$ ./main

5. 输入 ./main 运行生成的目标文件
Sum=45

6.得出 Sum的结果;
Please input two number:

7.提示输入两个数字;
45,90

8.我们输入数字为 45,90;
The Max Number is:90

9.计算出最大数为:90;

[lxiron@FedoraOS myfolder]$

10.总结 makefile的规则。

target:components

tab rule

第一行是依赖关系;如 我们makefile文件的第一行目标(target)main:依赖对象(components)main.o sum.o max.o

第二行是规则,第二行的 tab空行不能少,我刚开没有注意这个问题,导致的我找原因找了好久!当依赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令。

这篇关于Linux环境下写一个 简单的 makefile的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/680959

相关文章

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直