Jak nainstalovat GNU GCC (C a C++ Compiler) a vývojové nástroje v RHEL/CentOS a Fedora
V dnešní době se jako správce systému nebo inženýr nemůžete cítit spokojeni tím, že víte, jak používat CLI a odstraňovat problémy se servery GNU/Linux, ale budete muset jít ještě o krok dále do oblasti vývoje, abyste zůstali na vrcholu své hry. . Pokud uvažujete o kariéře ve vývoji jádra nebo aplikací pro Linux, pak C nebo C++ je nejlepší místo, kde začít.
Čtěte také: Instalace C, C++ a Build Essential Tools v Debian/Ubuntu/Mint
V tomto článku vysvětlíme, jak nainstalovat kompilátory Gnu C a C++ a související vývojové nástroje, jako je automake, autoconf, flex, bison atd. v systémech Fedora a CentOS/RHEL.
Co je kompilátor?
Jednoduše řečeno, kompilátor je softwarový program, který převádí příkazy napsané ve zdrojovém jazyce do cílového jazyka, kterému může CPU stroje rozumět a provádět jej.
Ve Fedoře a jejích derivátech (ve skutečnosti to platí i pro celý ekosystém distribuce Linuxu) jsou nejznámější kompilátory C a C++ gcc a g++, oba vyvinuté a aktivně podporované Free Software Foundation jako součást projektu GNU.
Instalace GCC (C++ Compiler and Development Tools
Pokud gcc a/nebo g++ a související Nástroje pro vývoj nejsou ve vašem systému ve výchozím nastavení nainstalovány, můžete nainstalovat nejnovější dostupné z úložišť jak následuje:
yum groupinstall 'Development Tools' [on CentOS/RHEL 7/6]
dnf groupinstall 'Development Tools' [on Fedora 22+ Versions]
Než se pustíme do psaní kódu v C nebo C++, chceme vám ukázat další nástroj pro vylepšení vaší sady vývojových nástrojů.
Zrychlení kompilací C a C++ v Linuxu
Když jako součást vývojového procesu musíte po provedení změn ve zdrojovém kódu několikrát rekompilovat, je skvělé mít mezipaměť kompilátoru pro urychlení budoucích rekompilací.
V Linuxu existuje nástroj nazvaný ccache, který urychluje rekompilaci tím, že ukládá předchozí kompilace do mezipaměti a detekuje, kdy se stejná kompilace provádí znovu. Kromě C a C++ podporuje také Objective-C a Objective-C++.
Cache má jen několik omezení: je užitečná pouze při rekompilaci jednoho souboru. U jiných typů kompilací proces skončí spuštěním skutečného kompilátoru. Totéž se stane, pokud příznak kompilátoru není podporován. Světlou stránkou je, že v žádném případě nebude zasahovat do skutečné kompilace a nevyvolá chybu – stačí se vrátit ke skutečnému kompilátoru.
Pojďme nainstalovat tento nástroj:
yum install ccache
a podívejte se, jak to funguje na příkladu.
Testování kompilátoru GNU C pomocí jednoduchého programu C++
Jako příklad použijeme jednoduchý program C++, který vypočítá plochu obdélníku poté, co byla zadána jeho délka a šířka jako vstupy.
Otevřete svůj oblíbený textový editor a zadejte následující kód, poté jej uložte jako area.cpp
:
#include <iostream>
using namespace std;
int main()
{
float length, width, area;
cout << "Enter the length of the rectangle: ";
cin >> length;
cout << "Now enter the width: ";
cin >> width;
area = length*width;
cout <<"The area of the rectangle is: "<< area << endl;
return 0;
}
Chcete-li zkompilovat výše uvedený kód do spustitelné pojmenované oblasti v aktuálním pracovním adresáři, použijte přepínač -o s g++:
g++ area.cpp -o area
Pokud chcete využít výhod ccache, stačí před výše uvedený příkaz přidat ccache, a to následovně:
ccache g++ area.cpp -o area
Poté spusťte binární soubor:
./area
Ukázkový výstup
Enter the length of the rectangle: 2.5
Now enter the width: 3.7
The area of the rectangle is: 9.25
Nedovolte, abyste si na tomto jednoduchém příkladu mysleli, že cache není užitečné. Při rekompilaci velkého souboru zdrojového kódu poznáte, jaký skvělý nástroj je cache. Stejný princip platí i pro programy C.
souhrn
V tomto článku jsme vysvětlili, jak nainstalovat a používat GNU kompilátory pro C a C++ v distribucích založených na Fedoře.
Kromě toho jsme si ukázali, jak použít mezipaměť kompilátoru k urychlení rekompilací stejného kódu. I když se můžete podívat na online manuálové stránky pro gcc a g++, kde najdete další možnosti a příklady, těšíme se na vaši odpověď, pokud máte nějaké dotazy nebo připomínky.