首页 > 系统相关 >在linux下makefile的使用示例

在linux下makefile的使用示例

时间:2023-03-16 09:58:44浏览次数:44  
标签:__ 文件 include 示例 makefile linux main tool2 tool1

前言

Makefile文件中的命令有一定规范,一旦该文件编写好以后在Linux命令行中执行一条make命令即可自动编译整个工程。不同厂家的make可能会稍有不同,并且语法上也有区别,不过基本思想都差不多,主要还是落在目标依赖上,最广泛使用的是GNUmake。

语法规则

目标 ... : 依赖 ...
	命令1
	命令2
	. . .

单独文件

测试文件,内容如下

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("hello makefile\n");

    return 0;
}

makfeile

# main.c
main:main.o   # 目标文件:依赖文件 链接
	gcc main.o -o main

main.o:main.S # 目标文件:依赖文件 汇编
	gcc -c main.S -o main.o

main.S:main.i # 目标文件:依赖文件 编译
	gcc -S main.i -o main.S

main.i:main.c # 目标文件:依赖文件 预处理
	gcc -E main.c -o main.i
	
.PHONY:
clear:
	rm main.i main.S  main.o  -rf
clearall:
	rm main.i main.S  main.o main -rf

多个文件

测试文件,内容如下

// mytool1.c
#include <stdio.h>

#include "tool1.h"

void mytool1()
{
    printf("%s %s print\n\n",__FILE__,__FUNCTION__);
}
#include <stdio.h>

#include "tool2.h"

void mytool2()
{
    printf("%s %s print\n\n",__FILE__,__FUNCTION__);
}
#include <stdio.h>
#include <stdlib.h>

#include "tool1.h"
#include "tool2.h"

int main()
{
    mytool1();
    mytool2();

    exit(0);
}
# tool1.c tool1.h tool2.c tool2.h main.c 

main:main.o tool1.o tool2.o 	# 目标文件:依赖文件
	gcc main.o tool1.o tool2.o -o main


main.o:main.c	# 目标文件:依赖文件
	gcc main.c -c -o main.o
tool1.o:tool1.c	# 目标文件:依赖文件
	gcc tool1.c -c -o tool1.o
tool2.o:tool2.c	# 目标文件:依赖文件
	gcc tool2.c -c -o tool2.o


.PHONY:
clear:
	rm main.o tool1.o tool2.o -r
clearall:
	rm main.o tool1.o tool2.o main -r

标签:__,文件,include,示例,makefile,linux,main,tool2,tool1
From: https://www.cnblogs.com/dongchao612/p/17221122.html

相关文章

  • Qt连接不上Linux服务器?
    目录1.Qt连接代码2.问题分析2.1ip和port是否填写正确2.2Linux的代码处理是否正确2.3Linux服务器端口未开放(这个很重要!)方法1:开放端口,一劳永逸方法2:关闭防火墙,去开放......
  • Linux基本指令(上)
    写在前面好久没有写博客了,学校快要期末考试了,这个是在零碎的时间的拼凑出来了的。闲言少序,在了解了Linux的历史背景后,我们需要开始初步开始学习如何使用Linux系统.操作系统......
  • Linux基本指令(中)
    写在前面今天我们首要的目的就是把我们常用的指令和大家分享完,我们添加一些管道和压缩的命令,指令这个部分到这里就基本结束了,当然,这些都是最基本的,后面我们用到其他指......
  • Python Flask JinJa2 语法介绍与示例讲解
    目录一、概述二、JinJa2语法介绍与示例讲解1)变量2)控制结构3)循环结构4)宏5)过滤器6)继承7)包含一、概述Flask是一个轻量级的PythonWeb框架,支持Jinja2模板引擎。Jinja2是一个......
  • Linux防火墙与端口操作命令
    目录Linux防火墙与端口操作命令1.防火墙操作命令2.端口操作命令3.CentOS7下安装firewallLinux防火墙与端口操作命令CentOS7系统1.防火墙操作命令(1)查看防火墙状......
  • Linux用户权限修改及ssh远程登陆
    问题产生:MobaXterm中ssh登录后,ftp文件传输服务器登陆账户权限不被允许进行文件上传,Mobaxterm出现permissiondenied的解决办法解决方案:1、提升登录账户的权限为root权限(......
  • Linux查看、修改SELinux的状态
    SELinux(Security-Enhanced ​​Linux​​)是美国国家安全局(NSA)对于强制访问控制的实现,是 ​​linux​​历史上最杰出的新安全子系统。但是我们一般都不用它,因为它管的......
  • linux目录详解
      /bin存放二进制可执行文件/etc存放系统管理和配置文件/home存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/ho......
  • linux安全基线配置
    【shell脚本分享】linux安全基线配置全解析点击关注......
  • linux-screen终端会话后台运行
    screenlinux终端关闭,也不影响终端里命令的正常运行,就需要screen及tmux特点会话恢复多窗口会话共享install&&usedyuminstall-yscreen//状态说明Attached......