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

相关文章

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详