Makefile入门一、helloworld

1、了解gcc从源码到可执行文件的步骤

大体分为一下四个步骤
第一步、预处理阶段:处理源码中的预处理语句(总是以#打头,如#include、#if #elif #end #error、#pragma pack|comment等);

gcc -E test.c -o test.i 或 gcc -E test.c

第二步、编译阶段:通过词法分析和语法分析,确认所有指令都符合语法规则后,将其转换成功能等效的汇编语言代码;

gcc -S test.i -o test.s

第三步、汇编阶段:使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为.o的目标文件中。

gcc -c test.s -o test.o

第四步、链接阶段:将各个模块之间相互作用的部分都处理好,使得各个模块之间能够正确地衔接。

gcc test.o -o test

2、Makefile的helloworld

了解了源码到可执行文件的步骤,就可以开始一个简单的helloworld了
建立一个hello文件夹,下有hello.cc

#include<stdio.h>
int main()
{
    printf("hello world\n");
    return 0;
}

文件下有Makefile文件

#语法规则
# targets...:prerequisites...
# 目标文件...:先决条件
# target 这 一 个 或 多 个 的 目 标 文 件 依 赖 于 	prerequisites 中 的 文 件
#	command
hello:hello.cc
	gcc  hello.cc -o hello

.PHONY:clean
clean:
	-rm hello

#.PHONY 意思表示 clean 是一个“伪目标”
#而在 rm 命令前面加了一个小减号的意思就是,也许某些文件出现问题,但不要管,继续做后面的事。
#当然,也可以这样
#clean:
#	-rm hello
#但这是不推荐的,如果在当前目录下,存在一个clean,那么就不执行clean后面的规则了

然后cd到当前目录,

make

就可以发现目录下出现hello的可执行文件

3、提到Makefile不得不了解gcc命令

语法

gcc(选项)(参数)

一些常用选项

-o:指定生成的输出文件;
-On:n为数字1~3,使用编译优化级别n编译程序;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-Wall:显示警告信息;
-c:仅执行编译操作,不进行链接操作。

更为细节的可参考
gcc的使用简介与命令行参数说明

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值