Linux编程环境与常用开发工具教程(第6天)
目标:熟悉Linux编程环境和常用的开发工具
内容:
- 掌握Makefile的编写和使用方法
- 了解常用的开发工具(如Vim、Emacs、VS Code等)
- 学习调试程序的基本方法(如使用GDB)
- 实践编写和运行简单的C/C++或Python程序
1. Makefile的编写和使用方法
1.1 Makefile的基本概念
Makefile是用于自动化编译和链接程序的脚本文件,通过定义一系列的规则和命令,Make工具能够自动根据文件的时间戳或依赖关系来编译和链接程序,从而极大地提高了开发效率。
1.2 Makefile的基本结构
Makefile主要由变量定义、规则(target: dependencies)和命令三部分组成。
- 变量定义:用于存储文件名、编译器选项等常用信息。
- 规则:定义了目标(target)和依赖(dependencies)之间的关系。
- 命令:当依赖文件发生变化时,需要执行的命令。
1.3 Makefile的常用变量
- CC:C编译器,默认值为
cc。 - CXX:C++编译器,默认值为
g++。 - CFLAGS:C编译器的选项。
- CXXFLAGS:C++编译器的选项。
- SRC:源文件列表。
- OBJ:目标文件列表。
- EXE:可执行文件名称。
1.4 Makefile的常用指令
- all:默认目标,通常表示编译所有程序。
- clean:用于删除生成的文件,如目标文件和可执行文件。
- .PHONY:声明伪目标,防止与文件名冲突。
1.5 示例Makefile
以下是一个简单的Makefile示例,用于编译一个包含多个源文件的C++项目。
makefile复制代码
# 定义编译器
CXX = g++
# 定义编译器选项
CXXFLAGS = -Wall -g
# 定义源文件和目标文件
SRC = main.cpp foo.cpp bar.cpp
OBJ = $(SRC:.cpp=.o)
# 定义可执行文件名称
EXE = myprogram
# 默认目标
all: $(EXE)
# 链接目标文件生成可执行文件
$(EXE): $(OBJ)
$(CXX) $(CXXFLAGS) -o $(EXE) $(OBJ)
# 编译源文件生成目标文件
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
# 清理生成的文件
clean:
rm -f $(OBJ) $(EXE)
# 声明伪目标
.PHONY: all clean
在这个Makefile中,我们定义了编译器、编译器选项、源文件列表、目标文件列表和可执行文件名称。然后,我们定义了三个目标:all(默认目标,表示编译所有程序)、clean(用于删除生成的文件)和一系列规则(将源文件编译成目标文件,并将目标文件链接成可执行文件)。
1.6 使用Makefile
在终端中,导航到包含Makefile的目录,并运行以下命令来编译项目:
bash复制代码
make
要清理生成的文件,可以运行:
bash复制代码
make clean
2. 常用的开发工具
2.1 Vim
Vim是一款高度可配置的文本编辑器,用于有效地创建和更改任何类型的文本。它提供了强大的文本编辑功能,包括语法高亮、代码折叠、多窗口编辑等。
-
安装Vim:
在大多数Linux发行版中,Vim已经预装在系统中。如果未安装,可以使用包管理器进行安装。例如,在Debian/Ubuntu系统中,可以使用以下命令:
bash复制代码 sudo apt-get install vim -
基本使用:
- 进入Vim:
vim filename - 退出Vim:在普通模式下按
:wq保存并退出,或按:q!强制退出不保存。 - 普通模式与插入模式切换:按
i进入插入模式,按Esc退出插入模式进入普通模式。 - 复制粘贴:在普通模式下,按
yy复制当前行,按p粘贴。 - 查找与替换:在普通模式下,按
/进入查找模式,输入要查找的字符串后按Enter。要替换,可以按:%s/old/new/g。
- 进入Vim:
2.2 Emacs
Emacs是一款可扩展的、自文档化的实时显示编辑器,支持多种编程语言。它提供了强大的文本编辑功能,包括语法高亮、代码折叠、宏录制等。
-
安装Emacs:
在大多数Linux发行版中,Emacs已经预装在系统中。如果未安装,可以使用包管理器进行安装。例如,在Debian/Ubuntu系统中,可以使用以下命令:
bash复制代码 sudo apt-get install emacs -
基本使用:
- 进入Emacs:
emacs filename - 退出Emacs:按
Ctrl+x Ctrl+c。 - 保存文件:按
Ctrl+x Ctrl+s。 - 打开文件:按
Ctrl+x Ctrl+f。 - 查找与替换:按
Ctrl+s进入查找模式,按Ctrl+r进入替换模式。
- 进入Emacs:
2.3 VS Code
VS Code(Visual Studio Code)是一款由微软开发的免费开源代码编辑器,支持多种编程语言和调试功能。它提供了丰富的插件和扩展,使得开发者可以根据需要定制编辑环境。
-
安装VS Code:
可以从VS Code的官方网站下载适用于Linux的安装包,并按照提示进行安装。
-
基本使用:
- 打开VS Code:在终端中输入
code并按Enter。 - 打开文件或文件夹:在VS Code中,使用“文件”菜单或快捷键(如
Ctrl+O)打开文件或文件夹。 - 编写代码:在编辑器窗口中编写代码,VS Code会自动进行语法高亮和代码补全。
- 调试代码:在VS Code中,可以使用内置的调试器进行调试。首先,需要配置调试器(如GDB),然后设置断点、查看变量值等。
- 打开VS Code:在终端中输入
3. 调试程序的基本方法(使用GDB)
GDB(GNU Debugger)是GNU项目调试器,用于调试C、C++和Fortran等语言编写的程序。它提供了强大的调试功能,包括设置断点、单步执行、查看变量值等。
3.1 安装GDB
在大多数Linux发行版中,GDB已经预装在系统中。如果未安装,可以使用包管理器进行安装。例如,在Debian/Ubuntu系统中,可以使用以下命令:
bash复制代码
sudo apt-get install gdb
3.2 基本使用
-
编译程序:在使用GDB调试程序之前,需要使用
-g选项编译程序以生成调试信息。例如:bash复制代码 g++ -g -o myprogram main.cpp -
启动GDB:在终端中输入
gdb并按Enter,然后输入要调试的可执行文件名称。例如:bash复制代码 gdb myprogram -
设置断点:在GDB中,可以使用
break命令设置断点。例如,要在main函数的开始处设置断点,可以使用以下命令:bash复制代码 break main -
运行程序:在GDB中,可以使用
run命令运行程序。例如:bash复制代码 run -
单步执行:在GDB中,可以使用
next(或n)命令单步执行代码,跳过函数调用。要单步进入函数调用,可以使用step(或s)命令。 -
查看变量值:在GDB中,可以使用
print(或p)命令查看变量的值。例如:bash复制代码 print var_name -
继续执行:在GDB中,可以使用
continue(或c)命令继续执行程序,直到遇到下一个断点或程序结束。 -
退出GDB:在GDB中,可以使用
quit(或q)命令退出调试器。
4. 实践编写和运行简单的C/C++或Python程序
4.1 编写和运行C程序
以下是一个简单的C程序示例,用于计算两个整数的和并输出结果。
c复制代码
#include <stdio.h>
int main() {
int a, b, sum;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
sum = a + b;
printf("它们的和是:%d\n", sum);
return 0;
}
编译和运行:
- 将上述代码保存为
sum.c文件。 - 在终端中导航到包含
sum.c文件的目录。 - 使用
gcc编译程序:gcc -o sum sum.c。 - 运行编译生成的可执行文件: