「Coding Tools」 Ubuntu下搭建C语言开发环境
今天我们来学习如何搭建C语言的开发环境,并且研究一下Clang/LLVM这一套编译框架。后续在我们自己开发一门编程语言的时候会很有用,LLVM提供了一个优秀的编译器后端。
首先当然是安装Clang了,这次我们使用apt命令安装。打开Ubuntu终端,输入clang命令后可以看到Clang是还没有安装的,并且给出了安装提示命令。我们可以右键直接复制后,粘贴到终端窗口。点击Enter后会让你输入密码,开始安装。


等待安装完成后,再次输入clang命令,发现提示已经变成“No input files”,这就说明已经安装好了。配合我们之前安装的VSCode,就可以开始C语言开发之旅了。这一个命令其实不仅仅安装了Clang程序,还包括LLVM后端以及各种库。Clang可以编译C/C++、OC等多个编程语言,编译速度比Ubuntu自带的gcc要快,质量也要好一些。

打开文件管理器,就是任务栏上的那个文件夹图标,然后新建一个文件夹叫做Coding Tools。写好的C语言源代码会保存在这里,这个目录只是临时做测试用,后续我们的正式代码还是会保存到Coding Master文件夹。

打开VSCode,然后打开Coding Tools文件夹,新建一个文件helloworld.c。此时我们就要写第一个C语言程序,非常经典的Hello, World!
#include <stdio.h>
void main ()
{
printf("Hello, World!\n");
}
写完后保存好,点击VSCode查看里的终端选项,或者点击“Ctrl+`”组合键。在打开的终端里输入编译命令:
clang helloword.c -o helloworld
可以看到有一个警告信息,但是并不影响编译结果,我们还是拿到了编译好的程序helloworld。Ubuntu下不像Windws,可执行程序可以没有如exe、msi这样的后缀。运行起来也很简单,输入以下命令即可:
./helloworld
我们可以看到终端里输出的Hello, World!文字了,说明源代码没有问题,运行成功。

你看在Ubuntu下开发C语言程序就是这么简单,安装编译器只需要一条命令就可以了。所以命令行才是提高效率的神器,同学们不能惧怕它,而是要掌握它并为你所用。
接下来讲讲为什么选择Clang以及LLVM的神奇之处。Clang本身是非常优秀的编译器前端,可以支持多种C语系的编程语言,编译速度很快且最终代码质量比较高。其优秀之处无需多言,重点是LLVM这个编译器后端。
如果要开发一门编程语言,就需要写一个编译器,把高级语言编译为最终的机器码。常规的方案是比较繁琐的,比如我写了一门Toy-Lang,想在x86、ARM、Risc-v上运行,那这个编译器就得能把Toy-Lang翻译成三种汇编。

而LLVM则可以为你省掉很大麻烦,它有一个中间语言格式IR。你需要做的就是把你设计好的语言翻译为IR,然后IR就可以翻译为x86、ARM等汇编格式。那么如果你多开发几种编程语言,或者其他人开发的时候,只要做到翻译为IR这一步就可以了。IR格式的语法处理LLVM就可以搞定,省掉了非常多的重复工作。

并且LLVM还提供一套C++的框架,来让你编写新语言的语法,定义关键字啊什么的。真是一步到位的方案,我现在了解得也不够深入,但是早晚会用到它的。计算机研究得多了,总想着搞一套自己的东西,编译器、操作系统、浏览器什么的都想戳一戳。今天就到这里,再见!
相关推荐
-
PHP8种变量类型的详细讲解2025-02-22 00:32:24
-
php+apache 和 php+nginx的区别2025-02-22 00:21:27
-
PHP:与workerman结合实现定时任务2025-02-22 00:15:57
-
Nginx的Rewrite规则与实例2025-02-22 00:15:39
-
MySql中身份证字段的简单脱敏介绍2025-02-22 00:15:36