Ubuntu入门:GCC编译器与Makefile详解及Shell脚本基础

1 下载量 64 浏览量 更新于2024-08-29 收藏 483KB PDF 举报
"Ubuntu入门教程,涉及GCC编译器的使用,Makefile的基础知识以及Shell脚本的编写。" 本文将详细介绍Ubuntu系统中进行软件开发的一些基础工具和概念,包括GCC编译器的配置与使用,Makefile的编写,以及Shell脚本的基础知识。 1.GCC编译器 GCC(GNU Compiler Collection)是GNU项目的一部分,它是一套广泛用于C、C++、Objective-C、Fortran、Ada、Go和D等多种编程语言的编译器。在Ubuntu系统中,GCC通常预装,但你可以通过`gcc -v`命令来查看其版本信息。 1.1.VIM设置 VIM是一个强大的文本编辑器,经常被用来编写源代码。为了便于代码阅读和维护,可以调整VIM的设置使其在编辑时将Tab键映射为4个空格,同时显示行号。打开`/etc/vim/vimrc`文件,添加以下行: ``` set ts=4 set nu ``` 然后按下"esc",输入":wq"保存并退出。 1.2.编译代码 使用GCC编译C程序的基本命令格式是`gcc xxx.c -o xxx`,这将把`xxx.c`编译并链接成名为`xxx`的可执行文件。编译过程包括预处理、编译、汇编和链接四个步骤。预处理处理头文件、宏和条件编译,编译阶段将预处理后的代码转换为汇编代码,汇编阶段将汇编代码转换为目标代码,最后链接阶段将所有目标代码合并成一个可执行文件,同时处理库的引用。 2.Makefile基础 Makefile是构建工程的重要工具,它定义了如何编译、链接和执行项目中的各个源文件。下面是一个简单的Makefile示例,涉及的实验包含5个文件:main.c、input.c、calcu.c、input.h、calcu.h。 ```makefile CC = gcc CFLAGS = -Wall OBJ = main.o input.o calcu.o all: my_program my_program: $(OBJ) $(CC) $(CFLAGS) -o my_program $(OBJ) %.o: %.c $(CC) $(CFLAGS) -c $< clean: rm -f *.o my_program ``` 这个Makefile定义了目标`my_program`,并指定了依赖的源文件对象。`all`是默认目标,当运行`make`时会执行该规则。`%.o: %.c`是模式规则,表示对于每一个`.c`文件,都需要先编译成相应的`.o`目标文件。`clean`规则用于清理编译产生的中间文件。 2.2. Makefile概念和基本操作步骤 - 目标(Target):Makefile中的第一条命令执行的目标,如`my_program`。 - 靠谱(Prerequisite):目标依赖的文件,如`$(OBJ)`。 - 规则(Rule):描述如何从靠谱创建目标的命令。 2.3. Makefile规则格式 规则通常由目标、靠谱和命令组成,命令前必须有tab键。 2.4. Makefile变量 变量使得Makefile更易读写,如`CC`和`CFLAGS`。 2.5. Makefile模式规则&自动化变量 模式规则如`%.o: %.c`,允许批量处理类似的规则。自动化变量如`$@`代表目标,`$<`代表第一个靠谱。 2.6. Makefile条件判断 Makefile支持条件语句,可以根据不同情况执行不同的规则。 3.Shell编程 3.1. Shell脚本基础 Shell脚本是Linux/Unix系统的批处理脚本,通常用于自动化日常任务。它基于Bash或其他Shell解释器执行。 3.2. Shell脚本条件判断&函数&循环 Shell脚本支持条件判断(if-else结构)、函数定义和循环结构(如for、while),用于实现复杂的逻辑控制。 总结,了解并熟练运用GCC、Makefile和Shell是Linux环境下进行软件开发的基础。掌握这些工具,能够有效地提高代码的编译、构建和自动化管理效率。