成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

GCC:優化Linux、互聯網和一切

系統 Linux
經過數十年成千上萬人的開發,GCC 成為了世界上最受尊敬的編譯器之一。如果你在構建應用程序是沒有使用 GCC,那么你可能錯過了最佳解決方案。

[[378391]]

 軟件如果不能被電腦運行,那么它就是無用的。而在處理運行時性能的問題上,即使是最有才華的開發人員也會受編譯器的支配 —— 因為如果沒有可靠的編譯器工具鏈,就無法構建任何重要的東西。GNU 編譯器集合(GCC)提供了一個健壯、成熟和高性能的工具,以幫助你充分發揮你代碼的潛能。經過數十年成千上萬人的開發,GCC 成為了世界上最受尊敬的編譯器之一。如果你在構建應用程序是沒有使用 GCC,那么你可能錯過了最佳解決方案。

根據 LLVM.org 的說法,GCC 是“如今事實上的標準開源編譯器” [1],也是用來構建完整系統的基礎 —— 從內核開始。GCC 支持超過 60 種硬件平臺,包括 ARM、Intel、AMD、IBM POWER、SPARC、HP PA-RISC 和 IBM Z,以及各種操作環境,包括 GNU、Linux、Windows、macOS、FreeBSD、NetBSD、OpenBSD、DragonFly BSD、Solaris、AIX、HP-UX 和 RTEMS。它提供了高度兼容的 C/C++ 編譯器,并支持流行的 C 庫,如 GNU C Library(glibc)、Newlib、musl 和各種 BSD 操作系統中包含的 C 庫,以及 Fortran、Ada 和 GO 語言的前端。GCC 還可以作為一個交叉編譯器,可以為運行編譯器的平臺以外的其他平臺創建可執行代碼。GCC 是緊密集成的 GNU 工具鏈的核心組件,由 GNU 項目產生,它包括 glibc、Binutils 和 GNU 調試器(GDB)。

“一直以來我最喜歡的 GNU 工具是 GCC,即 GNU 編譯器集合。在開發工具非常昂貴的時候,GCC 是第二個 GNU 工具,也是使社區能夠編寫和構建所有其他工具的工具。這個工具一手改變了這個行業,導致了自由軟件運動的誕生,因為一個好的、自由的編譯器是一個社區軟件的先決條件。”—— Red Hat 開源和標準團隊的 Dave Neary。[2]

優化 Linux

作為 Linux 內核源代碼的默認編譯器,GCC 提供了可靠、穩定的性能以及正確構建內核所需的額外擴展。GCC 是流行的 Linux 發行版的標準組件,如 ArchLinux、CentOS、Debian、Fedora、openSUSE 和 Ubuntu 這些發行版中,GCC 通常用來編譯支持系統的組件。這包括 Linux 使用的默認庫(如 libc、libm、libintl、libssh、libssl、libcrypto、libexpat、libpthread 和 ncurses),這些庫依賴于 GCC 來提供可靠性和高性能,并且使應用程序和系統程序可以訪問 Linux 內核功能。發行版中包含的許多應用程序包也是用 GCC 構建的,例如 Python、Perl、Ruby、nginx、Apache HTTP 服務器、OpenStack、Docker 和 OpenShift。各個 Linux 發行版使用 GCC 構建的大量代碼組成了內核、庫和應用程序軟件。對于 openSUSE 發行版,幾乎 100% 的原生代碼都是由 GCC 構建的,包括 6135 個源程序包、5705 個共享庫和 38927 個可執行文件。這相當于每周編譯 24540 個源代碼包。[3]

Linux 發行版中包含的 GCC 的基本版本用于創建定義系統應用程序二進制接口(ABI)的內核和庫。用戶空間開發者可以選擇下載 GCC 的最新穩定版本,以獲得高級功能、性能優化和可用性改進。Linux 發行版提供安裝說明或預構建的工具鏈,用于部署最新版本的 GCC 以及其他 GNU 工具,這些工具有助于提高開發人員的工作效率和縮短部署時間。

優化互聯網

GCC 是嵌入式系統中被廣泛采用的核心編譯器之一,支持為日益增長的物聯網設備開發軟件。GCC 提供了許多擴展功能,使其非常適合嵌入式系統軟件開發,包括使用編譯器的內建函數、#語法、內聯匯編和以應用程序為中心的命令行選項進行精細控制。GCC 支持廣泛的嵌入式體系結構,包括 ARM、AMCC、AVR、Blackfin、MIPS、RISC-V、Renesas Electronics V850、NXP 和 Freescale Power 處理器,可以生成高效、高質量的代碼。GCC提供的交叉編譯能力對這個社區至關重要,而預制的交叉編譯工具鏈 [4] 是一個主要需求。例如,GNU ARM 嵌入式工具鏈是經過集成和驗證的軟件包,其中包含 ARM 嵌入式 GCC 編譯器、庫和其它裸機軟件開發所需的工具。這些工具鏈可用于在 Windows、Linux 和 macOS 主機操作系統上對流行的 ARM Cortex-R 和 Cortex-M 處理器進行交叉編譯,這些處理器已裝載于數百億臺支持互聯網的設備中。[5]

GCC 為云計算賦能,為需要直接管理計算資源的軟件提供了可靠的開發平臺,如數據庫和 Web 服務引擎以及備份和安全軟件。GCC 完全兼容 C++ 11 和 C++ 14,為 C++ 17 和 C++ 2a 提供實驗支持 [6](LCTT 譯注:本文原文發布于 2018 年),可以創建性能優異的對象代碼,并提供可靠的調試信息。使用 GCC 的應用程序的一些例子包括:MySQL 數據庫管理系統,它需要 Linux 的 GCC [7];Apache HTTP 服務器,它建議使用 GCC [8];Bacula,一個企業級網絡備份工具,它需要 GCC。[9]

優化一切

對于高性能計算(HPC)中使用的科學代碼的研究和開發,GCC 提供了成熟的 C、C++ 和 Fortran 前端,以及對 OpenMP 和 OpenACC API的支持,用于基于指令的并行編程。因為 GCC 提供了跨計算環境的可移植性,它使得代碼能夠更容易地在各種新的和傳統的客戶機和服務器平臺上進行測試。GCC 為 C、C++ 和 Fortran 編譯器提供了 OpenMP 4.0 的完整支持,為 C 和 C++ 編譯器提供了 OpenMP 4.5 完整支持。對于 OpenACC、 GCC 支持大部分 2.5 規范和性能優化,并且是唯一提供 OpenACC 支持的非商業、非學術編譯器。

代碼性能是這個社區的一個重要參數,GCC 提供了一個堅實的性能基礎。Colfax Research 于 2017 年 11 月發表的一篇論文評估了 C++ 編譯器在使用 OpenMP 4.x 指令并行化編譯代碼的速度和編譯后代碼的運行速度。圖 1 描繪了不同編譯器編譯并使用單個線程運行時計算內核的相對性能。性能值經過了歸一化處理,以 G++ 的性能為 1.0。

圖 1 為由不同編譯器編譯的每個內核的相對性能。(單線程,越高越好)。

他的論文總結道:“GNU 編譯器在我們的測試中也做得很好。G++ 在六種情況中的三種情況下生成的代碼速度是第二快的,并且在編譯時間方面是最快的編譯器之一。”[10]

誰在用 GCC?

在 JetBrains 2018 年的開發者生態狀況調查中,在接受調查的 6000 名開發者中,66% 的 C++ 程序員和 73% 的 C 程序員經常使用 GCC。[11] 以下簡要介紹 GCC 的優點,正是這些優點使它在開發人員社區中如此受歡迎。

◈ 對于需要為各種新的和遺留的計算平臺和操作環境編寫代碼的開發人員,GCC 提供了對最廣泛的硬件和操作環境的支持。硬件供應商提供的編譯器主要側重于對其產品的支持,而其他開源編譯器在所支持的硬件和操作系統方面則受到很大限制。[12]

◈ 有各種各樣的基于 GCC 的預構建工具鏈,這對嵌入式系統開發人員特別有吸引力。這包括 GNU ARM 嵌入式工具鏈和 Bootlin 網站上提供的 138 個預編譯交叉編譯器工具鏈。[13] 雖然其他開源編譯器(如 Clang/LLVM)可以取代現有交叉編譯工具鏈中的 GCC,但這些工具集需要開發者完全重新構建。[14]

◈ GCC 通過成熟的編譯器平臺向應用程序開發人員提供可靠、穩定的性能。《在 AMD EPYC 平臺上用 GCC 8/9 與 LLVM Clang 6/7 編譯器基準測試》這篇文章提供了 49 個基準測試的結果,這些測試的編譯器在三個優化級別上運行。使用 -O3 -march=native 級別的 GCC 8.2 RC1 在 34% 的時間里排在第一位,而在相同的優化級別 LLVM Clang 6.0 在 20% 的時間里贏得了第二位。[15]

◈ GCC 為編譯調試 [16] 提供了改進的診斷方法,并為運行時調試提供了準確而有用的信息。GCC 與 GDB 緊密集成,GDB 是一個成熟且功能齊全的工具,它提供“不間斷”調試,可以在斷點處停止單個線程。

◈ GCC 是一個得到良好支持的平臺,它有一個活躍的、有責任感的社區,支持當前版本和以前的兩個版本。由于每年都有發布計劃,這為一個版本提供了兩年的支持。

GCC:仍然在繼續優化

GCC 作為一個世界級的編譯器繼續向前發展。GCC 的最新版本是 8.2,于 2018 年 7 月發布(LCTT 譯注:本文原文發表于 2018 年),增加了對即將推出的 Intel CPU、更多 ARM CPU 的硬件支持,并提高了 AMD 的 ZEN CPU 的性能。增加了對 C17 的初步支持,同時也對 C++2A 進行了初步工作。診斷功能繼續得到增強,包括更好的發射診斷,改進了定位、定位范圍和修復提示,特別是在 C++ 前端。Red Hat 的 David Malcolm 在 2018 年 3 月撰寫的博客概述了 GCC 8 中的可用性改進。[17]

新的硬件平臺繼續依賴 GCC 工具鏈進行軟件開發,例如 RISC-V,這是一種自由開放的 ISA,機器學習、人工智能(AI)和物聯網細分市場都對其感興趣。GCC 仍然是 Linux 系統持續開發的關鍵組件。針對 Intel 架構的 Clear Linux 項目是一個為云、客戶端和物聯網用例構建的新興發行版,它提供了一個很好的示例,說明如何使用和改進 GCC 編譯器技術來提高基于 Linux 的系統的性能和安全性。GCC 還被用于微軟 Azure Sphere 的應用程序開發,這是一個基于 Linux 的物聯網應用程序操作系統,最初支持基于 ARM 的聯發科 MT3620 處理器。在培養下一代程序員方面,GCC 也是樹莓派的 Windows 工具鏈的核心組件,樹莓派是一種運行基于 Debian 的 GNU/Linux 的低成本嵌入式板,用于促進學校和發展中國家的基礎計算機科學教學。

GCC 由 GNU 項目的創始人理查德•斯托曼首次發布 于 1987 年 3 月 22 日,由于它是第一個作為自由軟件發布的可移植的 ANSI C 優化編譯器,因此它被認為是一個重大突破。GCC 由來自世界各地的程序員組成的社區在指導委員會的指導下維護,以確保對項目進行廣泛的、有代表性的監督。GCC 的社區方法是它的優勢之一,它形成了一個由開發人員和用戶組成的龐大而多樣化的社區,他們為項目做出了貢獻并提供支持。根據 Open Hub 的說法,“GCC 是世界上最大的開源團隊之一,在 Open Hub 上的所有項目團隊中排名前 2%。”[18]

關于 GCC 的許可問題,人們進行了大量的討論,其中大多數是混淆而不是啟發。GCC 在 GNU 通用公共許可證(GPL)版本 3 或更高版本下發布,但運行時庫例外。這是一個左版許可,這意味著衍生作品只能在相同的許可條款下分發。GPLv3 旨在保護 GCC,防止其成為專有軟件,并要求對 GCC 代碼的更改可以自由公開地進行。對于“最終用戶”來說,這個編譯器與其他編譯器完全相同;使用 GCC 對你為自己的代碼所選擇的任何許可都沒有區別。[19] 

 

責任編輯:龐桂玉 來源: Linux
相關推薦

2013-09-13 16:05:51

云計算SDN

2016-12-26 11:44:58

深度學習

2021-10-12 13:52:59

量子互聯網網絡技術量子密鑰

2015-06-24 15:35:54

2015-05-28 16:11:07

互聯網+

2014-01-15 14:35:35

云計算

2017-06-05 08:18:32

MySQL互聯網標準

2015-10-28 15:18:45

2014-03-19 16:11:04

移動互聯網的顛覆和延伸

2015-10-08 15:20:34

互聯網物聯網

2012-08-29 10:26:19

螞蟻互聯網算法

2015-10-30 17:50:18

互聯網金融

2018-08-15 09:02:59

產業互聯網工業互聯網物聯網

2021-04-26 05:36:59

物聯網

2015-09-22 09:17:33

互聯網發展史

2018-03-22 07:06:20

互聯網互聯網++互聯網

2018-06-15 23:00:56

2022-04-01 15:24:39

物聯網

2019-05-24 08:54:13

2015-03-25 18:31:20

互聯網+
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 蜜臀久久99精品久久久久久宅男 | 中国美女一级黄色片 | 一区二区影院 | 日韩中文一区二区 | 亚洲在线一区 | 欧美一级二级视频 | 亚洲精品一区在线观看 | 激情毛片 | 久久精品超碰 | 亚洲精品免费在线 | 久久精品亚洲欧美日韩精品中文字幕 | 久久精品在线播放 | 亚洲情侣视频 | 午夜精品视频一区 | 日本一区二区高清不卡 | 国产乱码精品一区二区三区中文 | 粉嫩一区二区三区国产精品 | av一级久久 | 放个毛片看看 | 日韩不卡在线 | 亚洲欧美另类在线观看 | 日韩一区精品 | av在线三级 | 国产日韩一区二区 | 超碰免费在线 | 日韩欧美综合 | 久久国产精品99久久久久 | 一区二区三区欧美 | 一区二区激情 | 欧美福利网站 | 日韩无| 在线视频一区二区 | 亚洲天堂一区二区 | 91麻豆蜜桃一区二区三区 | 国产高清久久久 | 亚洲一区| 中文字幕乱码一区二区三区 | 亚洲欧美国产毛片在线 | 久久久久国产成人精品亚洲午夜 | 日韩在线一区二区三区 | 日韩一区中文字幕 |