作者|慕课网精英讲师 张磊
今天这篇文章我们来说说C 语言的编译器。
1. C 语言编译器
每个语言都须要编译器,甚至包括可以直接操作 CPU 内部寄存器的汇编语言。编译器的作用就是将我们用接近人类自然语言编撰的程序翻译成计算机可以直接执行的二进制文件。
其实使用二进制是人类在计算机发明过程中妥协于工程实践的一个行为。因为从最高效率的数字补码来说,三进制虽然更为有效率,但是实现上去不这么容易。
C 语言的编译器有特别多种,下面我们列出了一些,供你们参考。
编译器
编译器作者
支持的操作系统
是否有相关的集成开发环境
授权许可类型
AMPC
Axiomatic Solutions Sdn Bhd
Windows,Unix & Other
Yes
Proprietary
Amsterdam Compiler Kit
Andrew Tanenbaum and Ceriel Jacobs
Unix & Other
No
BSD
CCS C Compiler
CCS, Inc.
Windows,Unix & Other
Yes
Proprietary
Clang
Low-Level Virtual Machine
Windows,Unix & Other
No
BSD
DMS Software Reengineering Toolkit
Semantic Designs
Windows,Unix & Other
No
Proprietary
GCC C
GNU Project
Windows,Unix,IBM mainframe, AmigaOS, VAX/VMS, RTEMS
No
GPL
RCC (RCOR C Compiler)
Rodrigo Caetano (rcor)
Windows,Unix
No
GPL
Interactive C
KISS Institute for Practical Robotics
Windows, Unix, Mac, Linux, IRIX,
Solaris, SunOS
No
LabWindows/CVI
National Instruments
Windows,Unix & Other
Yes
Proprietary
lcc
Chris Fraser and David Hanson
Windows,Unix & Other
Windows only
Freeware (source code available for non-commercial use)
Mark Williams C
Mark Williams Company
Windows,Other
Yes
Proprietary
Microsoft C
Microsoft
Windows
Yes
Proprietary
Nwcc
Nils Weller
Windows,Unix,Other
No
BSD
Open64
SGI Google HP Intel Nvidia PathScale Tsinghua University and others
Unix,Other
No
GPL
Pelles C
Pelle Orinius
Windows
Yes
Freeware
PGCC
The Portland Group
Windows,Unix,Other— Mac OS X
Yes — Visual Studio on Windows
Proprietary
Portable C Compiler
Anders Magnusson and others
Windows,Unix,Other
No
BSD
Power C
Mix Software
Other
No
Proprietary
QuickC
Microsoft
Windows
Yes
Proprietary
SAS/C
SAS Institute
Windows,Unix,Other-IBM mainframe, AmigaOS, 68K, 88K, Unix
Yes
Proprietary
Tiny C Compiler
Fabrice Bellard
Windows,Unix
No
LGPL
Turbo C
Embarcadero
Other
No
Proprietary - V 2.01 freely available
CCS C Compiler
CCS, Inc.
Windows,Unix,Other
Yes
Proprietary
MikroC Compiler
MikroElektronika, Inc.
Windows,Unix,Other
Yes
Proprietary
ups debugger (includes C interpreter)
Tom Hughes, Ian Edwards, and others
Unix,Other-Solaris, SunOS
Yes
GPL
VBCC
Dr. Volker Barthelmann
Windows,Unix,Other
No
Freeware (source code available,
XL C
IBM
Unix-AIX
Eclipse
Proprietary
当然,编译器还与估算硬件平台息息相关。同一个编译器会由于计算机体系结构不同而分为不同的版本。如 arm64,armhf,x86, x86_64,PowerPC 等等。
我们可以使用 gcc 编译器。同时还可以在 arm64,armhf,x84_64 等硬件平台上编译我们的程序。从中可以看出 C 语言的移植性还是挺好的。同样的程序,我们也可以在不同的编译器以及硬件平台上编译执行。
2. 使用 IDE 编译 C 语言
在集成环境中,编译 C 语言通常只须要在菜单中选择 运行 或者 调试运行 即可。也可以通过相关的快捷键来直接编译运行程序。要是只编译不运行,那么上面会有 编译 选项和与之对应的快捷键。这时程序只是编译,并不会运行。
对于初学者来说建议你们不使用 IDE, 而是直接使用文本编辑器来编辑程序。这里建议你们使用谷歌的 Visual Studio Code, 简称 VSCode。这个文本编辑器,现代,多功能,多种操作系统下都可以使用,功能强悍,可以依照自己的须要安装插件扩充功能。
3. Ubuntu 下安装 GCC 编译器
在类 Linux 中编译 C 语言是一件简单的事情。只要打开一个终端窗口安装 gcc 编译器即可。
对于基于 Ubuntu 系统的用户,安装编译所需的软件只须要执行如下命令:
#1:a:4:5:c:9:4:f:2:7:f:a:3:3:b:0:9:4:c:8:d:0:6:f:e:d:f:c:6:b:5:2#
Tips:对于 RPM 包管理的 Linux 发行版(如 CentOS,OpenSUSE 等),会有类似的软件组,只不过名称和安装时所使用的命令不同。
在安装结束后可以查看 gcc 的版本。
#6:9:e:c:a:8:7:6:d:b:3:5:2:6:4:3:0:1:1:8:a:4:1:7:7:1:f:7:8:d:e:c#
会有类似如下的信息输出:
#c:7:a:e:f:a:d:6:0:d:3:0:f:4:4:a:5:7:2:c:0:4:4:b:5:5:2:2:f:4:e:1#
这时候可以把之前仍然使用的示例程序编译一下。
实例演示
#6:5:0:6:c:a:4:3:7:2:8:d:3:7:0:3:1:3:c:2:8:8:5:6:3:7:6:d:7:3:4:f#
首先将里面的命令保存为文件名 test.c。
编译 C 语言的命令如下:
#9:9:2:9:a:e:a:3:2:2:d:f:6:9:0:1:0:2:5:f:1:5:8:f:a:e:a:d:2:f:d:9#
这个命令的意思是将 test.c 文件名的程序源码,编译为名称 test 二进制程序。
4. 在 Windows 下编译 C 语言
以前在 Windows 下直接编译 C 语言是一件困难的事情。要么使用例如 Visual Studio 之类的 IDE,要么安装 Cygwin 这类的模拟环境。
但是在目前 Windows 10 中,现在有了更便捷的选择。可以安装 WSL 环境, 全称为 Windows Subsystem for Linux。大家可以通过搜索里面的关键字来查找安装方法。
在这儿我将谷歌的官方文档链接置于这儿,方便你们安装。这里有详尽步骤,以及你们在安装过程中会时常遇见的安装问题等。
适用于 Linux 的 Windows 子系统安装手册 (Windows 10)
在选择安装 Ubuntu 后,就可以根据前面在 Linux 环境下编译 C 语言的形式来编译了。
Tips:这时候你们可能很好奇文件路径的问题。在 Windows 10 中的c盘,是挂载在 WSL 系统中 /mnt 目录下的。比如你的用户名叫 mooc,那么你的文档目录下储存了源代码,你要如何步入 文档 这个目录呢?
cd /mnt/c/Users/mooc/Documents/ 代码块1
3. 小结
C 语言的编译总结上去似乎就是,用编译器将源代码,也就是我们可以看懂的程序,翻译成机器可以看懂的机器码。
这个过程须要你做到几点:
准备编译器;准备代码编撰工具;编写代码;通过命令行,使用编译器编译。
当然这是最简单的使用,我们还可以通过工具来进行编译命令行的代替。