gcc和makfile

gcc

没安装的话,按照终端提示的安装命令安装就行
运行的格式: gcc [选项] [要编译的文件] [选项] [目标文件]

一个程序编译的话,一般包括4个阶段
1.预处理:进行宏替换
2.编译(生成汇编)
3.汇编(生成机器可以识别的代码)
4.连接生成可以执行的文件或者库文件

预处理(进行宏替换)

这里以一个test2.c的文件为例

命令: gcc -o 文件名 重定义文件名

gcc -o 命令,也就是把文件名重定义下

命令 gcc -E test2.c - o test2.i
在这里插入图片描述
在这里插入图片描述

编译(生成汇编)

命令: gcc -S test2.i -o test2.s

在这里插入图片描述
在这里插入图片描述

汇编(生成机器可以识别的代码)

在这里插入图片描述
在这里插入图片描述

连接(生成可以执行的文件或者库文件)

在这里插入图片描述

这里生成了可执行文件mybin
直接在根目录下执行就行

./mybin
在这里插入图片描述
简单总结下
gcc -E .c文件 -o .i文件
gcc -S .o文件 -o .s文件
gcc -c .s文件 -o .o 文件
gcc .o文件 -o 可执行文件
根目录下直接运行可执行文件

make

如果文件很多的话,那么用gcc命令就很麻烦
所以推出了make命令,要想执行make命令,就要编写出makefile文件

makefile文件的编写

编写makefile文件的本质:
1.编写依赖关系
2.编写依赖方法
两者缺一不可

makefile文件编写:
方法一
在这里插入图片描述

在这里插入图片描述

makefile文件编写
方法二:

在这里插入图片描述

在这里插入图片描述

至于make命令中的
.PHONY: clean

你可以理解成一个固定的写法,记住就行
编译文件的话
用make命令

在这里插入图片描述

删除文件的
用make clean 命令

当然makefile文件的编写,比较复杂,我这里也只是简单的应用了下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
升级版本。与之前版本相比,有如下改动: 1. 在objdir中生成与source相似的目录树,防止不同source目录下同名的源文件生成的obj文件相互覆盖。 2. 在编译过程中,默认显示短命令。可以通过变量设置切换为显示长命令。 3. 用户可自扩展编译规则。 ========================================================== 模板中用到的可配置的变量列表: DEFINES: 定义编译参数,一般用-U或者-D进行宏定义。 EXTRA_CFLAGS: 定义其它的编译参数 inc-y: 头文件搜索目录 src-y: 源文件列表。其中以/结尾的表示目录,其它的表示文件。 SOURCE_SUFFIXES: 源文件后缀名。在src-y指定的目录中搜索以$(SOURCE_SUFFIXES)为后缀的文件,加入到源文件列表中。 例如: src-y = dir1/ dir2/ file9.c SOURCE_SUFFIXES := c cpp 最终形成的源文件列表为: dir1/*.c dir1/*.cpp dir2/*.c dir2/*.cpp file9.c obj-y: 加入连接的obj文件列表。通常这些obj文件不通过源文件编译产生。 ucmd_X: 自定义后缀名为X的源文件的编译规则。 EXCLUDE_FILES: 不参与编译的源文件列表。 OBJECT_DIR:obj文件的输出目录。 LIBS:连接时需要的lib文件。 LDFLAGS:连接参数。 OBJECT_SUFFIX: obj文件的后缀名 DEPEND_SUFFIX: depend文件的后缀名 TARGET: 整个工程最终产生的target文件名。 TARGET_TYPE: $(TARGET)类型。 TARGET_DEPENDS: $(TARGET)的依赖。 CENTRALIZED_SINGLE_DEPEND_FILE: 将所有依赖关系集中生成到同一个depend文件中。默认是每个obj产生一个单独的depend文件。 VERBOSE_COMMAND: 编译过程中显示完整的命令。
### 回答1: 使用gccmakefile编写c程序,可以通过以下步骤完成: 1. 编写c程序,例如hello.c。 2. 编写makefile文件,指定编译器和编译选项,以及目标文件和依赖关系。例如: ``` CC=gcc CFLAGS=-Wall -g TARGET=hello DEPS= $(TARGET): $(TARGET).o $(DEPS) $(CC) $(CFLAGS) -o $@ $^ %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< ``` 3. 在命令行中输入make命令,即可自动编译生成可执行文件。例如: ``` $ make ``` 4. 运行可执行文件。例如: ``` $ ./hello ``` 以上就是使用gccmakefile编写c程序的基本步骤。 ### 回答2: GCC是一种广泛使用的C编译器,对于编写C程序非常有帮助。而Makefile是一种构建工具,可以自动化编译程序。下面将逐步介绍如何使用GCCMakefile编写C程序。 一、安装GCC 在使用GCC之前,你需要在系统中安装GCC。具体安装方法可以查找相关文档或者手册。安装完成后,可以在终端输入“gcc -v”命令来查看GCC是否安装成功。 二、创建Hello World程序 首先,需要创建一个Hello World程序。在终端中使用文本编辑器来创建一个C源文件。输入以下代码: #include <stdio.h> int main(){ printf("Hello, World!\n"); return 0; } 将文件保存为hello.c。 三、编译程序 接下来需要用GCC来编译程序。运行以下命令来编译hello.c: gcc -o hello hello.c 此命令将生成一个可执行文件hello。现在就可以运行这个文件,程序会输出“Hello, World!”。 四、使用Makefile 另一种编译程序的方法是使用Makefile来编译程序。在程序根目录中创建一个名为Makefile的文件。在这个文件中,你需要定义目标文件、依赖关系和编译方式。可以将上文的hello.c程序改写成Makefile的形式: CC=gcc CFLAGS=-Wall hello: hello.o $(CC) $(CFLAGS) -o hello hello.o hello.o: hello.c $(CC) $(CFLAGS) -c hello.c .PHONY: clean clean: rm -f hello *.o 在这个Makefile中,使用了变量CC和CFLAGS来指定编译器和编译选项。然后定义了两个目标文件:hello和hello.o。第一个目标文件“hello”依赖于hello.o,指定了如何编译生成可执行文件。第二个目标文件“hello.o”依赖于hello.c,指定了如何编译生成.o文件。同时还定义了一个用于清理中间文件的环节。 现在你可以运行以下命令: make 这个命令会自动读取当前目录中的Makefile文件,并编译程序。若要清除目录中生成的中间文件,可以执行以下命令: make clean 总结 以上就是使用GCCMakefile编写C程序的基本方法。当然还有其他的编译方式,如使用IDE等,但是学习使用GCCMakefile可以让你更深入地理解编译程序的过程。希望以上方法能够帮助到大家。 ### 回答3: C语言是一门广泛应用的编程语言,它的应用范围涉及到操作系统、网络、数据库、多媒体等众多领域。为了方便编译、运行和维护C程序,我们常常使用gccmakefile来进行编译和构建。 gcc(GNU Compiler Collection)是一款免费开源的编译器,它支持C、C++、Objective-C、Fortran和Ada等多种编程语言。gcc的优点是它有丰富的功能和灵活的配置选项,能够生成高效的机器码,还支持调试信息的生成和优化等功能。它是编译Linux等开源系统中C程序的标准编译器,也是许多跨平台应用的首选编译器。 makefile是一种文本文件,用来指定如何构建一个工程,它包含编译规则、目标文件、依赖关系和编译选项等信息。makefile中的关键字包括target、dependencies、commands、macros和variables等,通过这些关键字可以指定程序的编译方式和运行方式。makefile的优点是它能够自动化编译和构建,减少了手动编译的繁琐和错误。 下面我们以一个简单的C程序为例,来演示如何使用gccmakefile进行编译和构建。 首先,我们创建一个名为hello.c的C程序文件,内容如下: #include<stdio.h> int main(){ printf("Hello, world!\n"); return 0; } 然后,我们使用gcc命令进行编译,生成可执行文件,命令如下: gcc -o hello hello.c 其中,“-o”选项用来指定输出文件的名称,“hello.c”为源程序文件名,“hello”为生成的可执行文件名。 接着,我们可以使用makefile来管理代码的构建过程。我们新建一个名为Makefile的文件,内容如下: CC=gcc CFLAGS= LDFLAGS= .PHONY: all all: hello hello: hello.o $(CC) $(LDFLAGS) $^ -o $@ hello.o: hello.c $(CC) $(CFLAGS) -c $< -o $@ 其中,“CC”是编译器名称,“CFLAGS”是编译选项,“LDFLAGS”是链接选项,“.PHONY”是一个伪目标,“all”是一个目标,表示要构建的程序名称,“hello”是目标文件,“hello.o”是依赖文件,“$(CC)”和“$<”等是变量和自动变量,用来代替具体的值。 最后,我们可以使用“make”命令来进行构建。命令如下: make all 运行以上命令后,程序即可成功编译和构建。我们可以使用“./hello”命令来运行程序,输出“Hello, world!”的内容。 以上是使用gccmakefile编写C程序的基本流程和示例。希望能对C语言的学习和实践有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温柔了岁月.c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值