C 语言作为一门经典的编程语言,广泛应用于系统编程、嵌入式开发、操作系统内核等领域。经过第一部分的介绍,已经可以实现一些最简单的功能了,比如文字版本的计算器,猜数字小游戏,通过调整输出格式从而输出优美的图形等等,那么在未来的实际使用中,使用一些什么工具去进行c语言的编辑,查看,编译,运行等等,本文将做简单的介绍,后续再慢慢完善相关的内容。
所有语言在编写的时候使用的工具就叫做编辑器,
C 语言程序的编写通常使用文本编辑器。可以选择不同的编辑器来编写 C 语言代码。常见的编辑器包括:
**VS Code:**一个现代化的、功能强大的编辑器,支持 C 语言开发,并且有丰富的插件和调试工具。
**Vim / Neovim:**一款轻量级、功能强大的命令行编辑器,适合喜欢使用终端的开发者。
**Sublime Text:**一个流行的跨平台编辑器,支持多种编程语言,包括 C。
**Emacs:**另一个强大的文本编辑器,支持多种语言,适合高级用户。
Source Insight是一个专为程序员设计的高级代码编辑器,它提供了强大的源代码浏览和分析功能,帮助开发者在大型项目中提高效率,尤其是在处理复杂代码和多模块项目时。
编写完 C 语言代码后,将人可识别的代码转变成机器可以识别的代码的过程叫做编译。用于编译的工具就叫做编译器,常见的 C 编译器包括:
**GCC (GNU Compiler Collection):**是最常见的 C 语言编译器之一,支持多种编程语言的编译。GCC 是一个强大且广泛使用的开源工具。
**Clang:**一个类似于 GCC 的编译器,性能较好,特别是在 macOS 上表现优异。
MinGW: Windows 上的 GCC 实现,用于开发 Windows 下的 C 程序。
编译器将 C 代码转化为目标代码后,链接器负责将多个目标文件链接成一个可执行文件。GCC 内部也包含了链接器,用于处理多个源文件和库的链接工作。
基于window和Linux两种情况来说
除去最小化安装的Linux系统,通常都会带有gcc,如果不带,rocky/centos下可以通过
yum install gcc
来安装。
安装好以后,编译c文件,假如c文件的名字叫做helloworld.c
执行如下命令:
gcc helloworld.c -o helloworld
或者
gcc -o helloworld helloworld.c
执行完成得到helloworld,然后./helloword就可以正常输出了。
一方面可以模拟上面linux的环境,参考
Cygwin环境搭建
另外可以使用集成工具,最简单的,如wintc,Dev-C++,高级一点的就是vscode等集成工具,纯新手建议wintc,界面如下:
在软件开发中,Makefile 和 Meson 是常见的构建系统,用于管理编译过程。下面是对 Makefile 和 Meson 的详细介绍
Makefile 是 make
构建工具使用的配置文件,用于定义如何编译和链接代码。它包含一组规则和依赖关系,用于自动化构建过程。Makefile 广泛用于 C 和 C++ 项目中,但也可以用于其他语言。
示例
CC = gcc
CFLAGS = -Wall -g
# 默认目标
all: main.o util.o
$(CC) $(CFLAGS) -o my_program main.o util.o
# 构建 main.o
main.o: main.c
$(CC) $(CFLAGS) -c main.c
# 构建 util.o
util.o: util.c
$(CC) $(CFLAGS) -c util.c
优点:
被广泛使用,具有良好的社区支持。
灵活,可以通过 shell 命令实现自定义操作。
缺点:
语法较为复杂,且在处理大型项目时容易出现维护困难。
缺乏跨平台支持,特别是Windows环境。
Meson 是一个现代的构建系统,旨在比传统的构建工具(如 Make)更快速、更易用。Meson 主要使用 Ninja 作为其后台构建系统,能够大幅提高构建效率。Meson 被设计为易于使用、快速并且跨平台,特别适合复杂的项目。
meson.build 文件:Meson 项目的构建脚本。
支持跨平台构建,能自动处理很多平台特性。
提供丰富的功能,如依赖管理、安装规则和测试管理。
示例
project('my_project', 'c')
定义可执行文件
executable(‘my_program’, [‘main.c’, ‘util.c’])
优点:
高效、简洁,尤其适合大型项目。
支持跨平台,能够在 Windows、Linux 和 macOS 上运行。
默认使用 Ninja 进行构建,构建速度非常快。
缺点:
需要额外安装 Ninja。
相比 Makefile,Meson 可能对一些开发者来说不够熟悉。
在版本控制系统的世界中,Git 和 SVN 是两种最常见的工具。它们的主要作用是帮助开发团队管理源代码的历史记录,跟踪文件的修改和版本更新。但它们在设计理念、功能特性和使用方式上有很多不同。
SVN(Subversion)是一个集中式版本控制系统(CVCS),由 Apache 基金会开发。与 Git 不同,SVN 使用中央服务器来存储所有的版本历史记录,开发者只能访问服务器上的最新数据。
特点:
集中式:所有的版本数据存储在中央服务器上,开发者仅在需要时访问。
简单易用:操作上比 Git 更直观,适合小型团队和简单项目。
适合大文件管理:SVN 在管理大文件(如二进制文件)时,比 Git 更加高效。
较少的离线支持:只有在连接到服务器时,才能获取最新的提交和历史记录。
常用命令:
svn checkout:从服务器检出代码
svn commit:提交更改到服务器
svn update:更新本地副本
svn branch:创建分支(不如 Git 灵活)
Git 是一个分布式版本控制系统(DVCS),最初由 Linus Torvalds 开发,用于管理 Linux 内核的开发。它的主要特点是每个开发者的机器上都有一个完整的版本库,也就是说,所有历史记录都存储在本地。
特点:
分布式:每个开发者都有完整的仓库和所有历史记录。
快速:操作大多在本地进行,速度非常快。
强大的分支和合并功能:Git 的分支管理非常灵活,支持并行开发。
离线工作:可以在没有网络连接的情况下进行大多数操作。
常用命令:
git init:初始化仓库
git clone:克隆仓库
git commit:提交修改
git branch:管理分支