C 语言的编译
上一个小节 C 语言的程序结构中我们简单的认识了一下 C 语言的程序到底由那些部分组成,但是仅仅了解 C 语言的程序结构还不够,仅仅是万里长征走完了第一步,后面还需要进行很多的步骤才能让程序成为一个可以使用的工业产品。还记的上一个小节中我们提到的 gcc 吗?其实这是一个 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 语言的移植性还是很好的。同样的程序,我们可以在不同的编译器以及硬件平台上编译执行。
Tips:请大家注意,我们的学习要求操作系统为 Windows 10,Linux, Unix, 或者 MacOS。对于微软已经停止维护的 Windows 7 以及更早的系统。我们没有办法使用新的特性来编译和运行相关的程序。
2. 使用 IDE 编译 C 语言
在集成环境中,编译 C 语言一般只需要在菜单中选择 运行 或者 调试运行 即可。也可以通过相关的快捷键来直接编译运行程序。要是只编译不运行,那么里面会有 编译 选项和与之对应的快捷键。这时程序只是编译,并不会运行。
对于初学者来说建议大家不使用 IDE, 而是直接使用文本编辑器来编辑程序。大家不要担心,我不会推荐诸如 VIM,EMACS 这种上个世纪的产物,因为太小众了。这里建议大家使用微软的 Visual Studio Code, 简称 VSCode。这个文本编辑器,现代,多功能,多种操作系统下都可以使用,功能强大,可以根据自己的需要安装插件扩展功能。
3. Ubuntu 下安装 GCC 编译器
在类 Linux 中编译 C 语言是一件简单的事情。只要打开一个终端窗口安装 gcc 编译器即可。
对于基于 Ubuntu 系统的用户,安装编译所需的软件只需要执行如下命令:
sudo apt install build-essential
Tips:对于 RPM 包管理的 Linux 发行版(如 CentOS,OpenSUSE 等),会有类似的软件组,只不过名称和安装时所使用的命令不同。
在安装结束后可以查看 gcc 的版本。
gcc --vresion
会有类似如下的信息输出:
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
这时候可以把之前一直使用的示例程序编译一下。
- 还没有人评论,欢迎说说您的想法!