七天掌握Linux-第六天

27 阅读6分钟

Linux编程环境与常用开发工具教程(第6天)

目标:熟悉Linux编程环境和常用的开发工具

内容

  1. 掌握Makefile的编写和使用方法
  2. 了解常用的开发工具(如Vim、Emacs、VS Code等)
  3. 学习调试程序的基本方法(如使用GDB)
  4. 实践编写和运行简单的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

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进入替换模式。

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),然后设置断点、查看变量值等。

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;

	}

编译和运行

  1. 将上述代码保存为sum.c文件。
  2. 在终端中导航到包含sum.c文件的目录。
  3. 使用gcc编译程序:gcc -o sum sum.c
  4. 运行编译生成的可执行文件: