新聞中心
本文首發(fā)自「慕課網(wǎng)」,想了解更多IT干貨內(nèi)容,程序員圈內(nèi)熱聞,歡迎關(guān)注!
作者|慕課網(wǎng)精英講師 張磊
今天這篇文章我們來聊聊C 語言的編譯器。
1. C 語言編譯器每個(gè)語言都需要編譯器,甚至包括可以直接操作 CPU 內(nèi)部寄存器的匯編語言。編譯器的作用就是將我們用接近人類自然語言編寫的程序翻譯成計(jì)算機(jī)可以直接執(zhí)行的二進(jìn)制文件。
其實(shí)使用二進(jìn)制是人類在計(jì)算機(jī)發(fā)明過程中妥協(xié)于工程實(shí)踐的一個(gè)行為。因?yàn)閺淖罡咝实臄?shù)字進(jìn)制來說,三進(jìn)制其實(shí)更為有效率,但是實(shí)現(xiàn)起來不那么容易。
C 語言的編譯器有非常多種,下面我們列舉了一些,供大家參考。
編譯器 | 編譯器作者 | 支持的操作系統(tǒng) | 是否有相關(guān)的集成開發(fā)環(huán)境 | 授權(quán)許可類型 |
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 |
當(dāng)然,編譯器還與計(jì)算硬件平臺(tái)息息相關(guān)。同一個(gè)編譯器會(huì)因?yàn)橛?jì)算機(jī)體系結(jié)構(gòu)不同而分為不同的版本。如 arm64,armhf,x86, x86_64,PowerPC 等等。
我們可以使用 gcc 編譯器。同時(shí)還可以在 arm64,armhf,x84_64 等硬件平臺(tái)上編譯我們的程序。從中可以看出 C 語言的移植性還是很好的。同樣的程序,我們也可以在不同的編譯器以及硬件平臺(tái)上編譯執(zhí)行。
2. 使用 IDE 編譯 C 語言在集成環(huán)境中,編譯 C 語言一般只需要在菜單中選擇?運(yùn)行?或者?調(diào)試運(yùn)行?即可。也可以通過相關(guān)的快捷鍵來直接編譯運(yùn)行程序。要是只編譯不運(yùn)行,那么里面會(huì)有?編譯?選項(xiàng)和與之對(duì)應(yīng)的快捷鍵。這時(shí)程序只是編譯,并不會(huì)運(yùn)行。
對(duì)于初學(xué)者來說建議大家不使用 IDE, 而是直接使用文本編輯器來編輯程序。這里建議大家使用微軟的 Visual Studio Code, 簡(jiǎn)稱 VSCode。這個(gè)文本編輯器,現(xiàn)代,多功能,多種操作系統(tǒng)下都可以使用,功能強(qiáng)大,可以根據(jù)自己的需要安裝插件擴(kuò)展功能。
3. Ubuntu 下安裝 GCC 編譯器在類 Linux 中編譯 C 語言是一件簡(jiǎn)單的事情。只要打開一個(gè)終端窗口安裝 gcc 編譯器即可。
對(duì)于基于 Ubuntu 系統(tǒng)的用戶,安裝編譯所需的軟件只需要執(zhí)行如下命令:
sudo apt install build-essential
代碼塊1
Tips:對(duì)于 RPM 包管理的 Linux 發(fā)行版(如 CentOS,OpenSUSE 等),會(huì)有類似的軟件組,只不過名稱和安裝時(shí)所使用的命令不同。
在安裝結(jié)束后可以查看 gcc 的版本。
gcc --vresion
代碼塊1
會(huì)有類似如下的信息輸出:
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.
代碼塊123
這時(shí)候可以把之前一直使用的示例程序編譯一下。
實(shí)例演示
# includeint main()
{
int x,y,z;
printf("Welcome to Utopia's lessons!\n");
return 0;
}
12345678
首先將上面的命令保存為文件名 test.c。
編譯 C 語言的命令如下:
gcc test.c -o test
代碼塊1
這個(gè)命令的意思是將?test.c?文件名的程序源碼,編譯為名稱?test?二進(jìn)制程序。
4. 在 Windows 下編譯 C 語言以前在 Windows 下直接編譯 C 語言是一件困難的事情。要么使用諸如 Visual Studio 之類的 IDE,要么安裝 Cygwin 這類的模擬環(huán)境。
但是在目前 Windows 10 中,現(xiàn)在有了更便捷的選擇。可以安裝 WSL 環(huán)境, 全稱為 Windows Subsystem for Linux。大家可以通過搜索上面的關(guān)鍵字來查找安裝方式。
在這里我將微軟的官方文檔鏈接放在這里,方便大家安裝。這里有詳細(xì)步驟,以及大家在安裝過程中會(huì)經(jīng)常遇到的安裝問題等。
適用于 Linux 的 Windows 子系統(tǒng)安裝指南 (Windows 10)
在選擇安裝 Ubuntu 后,就可以按照上面在 Linux 環(huán)境下編譯 C 語言的方式來編譯了。
3. 小結(jié)Tips:這時(shí)候大家可能很好奇文件路徑的問題。在 Windows 10 中的盤符,是掛載在 WSL 系統(tǒng)中 /mnt 目錄下的。比如你的用戶名叫 mooc,那么你的文檔目錄下存儲(chǔ)了源代碼,你要怎么進(jìn)入?文檔?這個(gè)目錄呢?
cd
/mnt/c/Users/mooc/Documents/?代碼塊1
C 語言的編譯總結(jié)起來其實(shí)就是,用編譯器將源代碼,也就是我們可以讀懂的程序,翻譯成機(jī)器可以讀懂的機(jī)器碼。
這個(gè)過程需要你做到幾點(diǎn):
- 準(zhǔn)備編譯器;
- 準(zhǔn)備代碼編寫工具;
- 編寫代碼;
- 通過命令行,使用編譯器編譯。
當(dāng)然這是最簡(jiǎn)單的使用,我們還可以通過工具來進(jìn)行編譯命令行的替代。
歡迎關(guān)注「慕課網(wǎng)」,發(fā)現(xiàn)更多IT圈優(yōu)質(zhì)內(nèi)容,分享干貨知識(shí),幫助你成為更好的程序員!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站名稱:C語言的編譯,干貨有點(diǎn)多!-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.ef60e0e.cn/article/cegjeh.html