W Linuksie GCC oznacza Kolekcja kompilatorów GNU . Jest to system kompilujący dla różnych języków programowania. Używany jest głównie do kompilacji programów w językach C i C++. Jako niezbędny argument przyjmuje nazwę programu źródłowego; pozostałe argumenty są opcjonalne, takie jak debugowanie, ostrzeżenie, plik obiektowy i łączenie bibliotek.
GCC jest głównym składnikiem zestawu narzędzi GNU. Różne projekty open source są kompilowane przy użyciu GCC, takiego jak jądro Linuksa i narzędzia GNU.
Jest rozpowszechniany na licencji GPL (General Public License). Pierwsza wersja, GCC 1.0 , został wydany w 1987 roku. Był przeznaczony tylko dla języka programowania C, ale w tym samym roku został rozszerzony na język programowania Język programowania C++ . Później został opracowany dla innych języków programowania, takich jak Objective-C, Objective-C++, Fortran, Jawa , Ada, Go i nie tylko. Jego najnowsza wersja ma znacznie ulepszoną implementację języków programowania.
Jest oficjalnym partnerem systemu operacyjnego GNU; dlatego został przyjęty jako standardowy kompilator systemów opartych na Linuksie.
rozłożyste drzewa
Składniki GCC
GCC jest narzędziem przenośnym i może działać na wielu systemach operacyjnych. Można go również przenieść Okna za pomocą niektórych narzędzi, np Cygwin, MinGW i MinGW-W64 . Ponieważ jest to kluczowy komponent zestawu narzędzi GNU, zawiera następujące komponenty do tworzenia aplikacji i systemów operacyjnych:
Kolekcja kompilatorów GNU (GCC): Jest to pakiet kompilatorów dla wielu języków, takich jak C/C++ i Objective-C/C++.
Marka GNU: Jest to narzędzie do automatyzacji, które służy do kompilowania i budowania aplikacji.
Binutils GNU: Jest to pakiet zawierający binarne narzędzia użytkowe, takie jak linker I monter .
Debuger GNU (GDB). Służy do debugowania aplikacji.
Narzędzia automatyczne GNU: Jest to system kompilacji zawierający kilka narzędzi narzędziowych, takich jak Autoconf, Autoheader, Automake i Libtool.
GNU Bizon: Jest to generator parsera, taki jak Lex i Yacc.
Proces kompilatora GCC
GCC kompiluje i czyni program wykonywalnym w następujących czterech krokach:
Przetwarzanie wstępne: Na tym etapie preprocesor GNU (cpp.exe) tworzy plik pośredni zawierający kod źródłowy. Preprocesor zawiera nagłówki (#include) i rozwija makra (#define). Rozważ poniższe polecenie:
cpp hello.c > hello.i
Powyższe polecenie utworzy plik pośredni „hello.i.”
Kompilacja: Na tym etapie wstępnie przetworzony kod źródłowy jest kompilowany do kodu asemblera dla określonego procesora.
gcc -S hello.i
Powyższe polecenie utworzy plik zestawu „hello.s.” Opcja „-s” służy do określenia, że ma zostać utworzony kod asemblera, a nie kod obiektowy.
Montaż: Kod asemblera jest konwertowany na kod maszynowy. Spowoduje to utworzenie pliku obiektowego „hello.o.”
as -o hello.o hello.s
Linker: Linker (ld.exe) jest ostatnim krokiem procesu kompilatora. Łączy kod obiektowy z kodem biblioteki i tworzy plik wykonywalny.
ld -o hello.exe hello.o
Powyższe polecenie utworzy plik wykonywalny „hello.exe”.
Instalacja GCC na Linuksie
Domyślnie jest dostarczany z większością dystrybucji Linuksa. Możemy to zweryfikować wykonując poniższe polecenie:
gcc -version
Powyższe polecenie wyświetli zainstalowaną wersję narzędzia GCC. Jeśli nie jest zainstalowany, wykonaj poniższe kroki, aby go zainstalować:
Krok 1: Zaktualizuj listę pakietów.
Aby zaktualizować listę pakietów, wykonaj następujące polecenie:
sudo apt update
Poprosi o hasło administracyjne systemu, wprowadź hasło. Rozpocznie się aktualizacja pakietu systemowego. Rozważ poniższy snap danych wyjściowych:
Krok 2: Zainstaluj pakiet niezbędny do kompilacji.
porównaj z metodą Java
Zawiera różne pakiety, takie jak gcc, g++ i narzędzie make. Wykonaj poniższe polecenie, aby je zainstalować:
sudo apt install build-essential
Powyższe polecenie zainstaluje wymagane pakiety dla narzędzia GCC. Teraz możemy używać narzędzia GCC na naszym komputerze. Rozważ poniższy snap danych wyjściowych:
Krok 3: Sprawdź instalację.
Aby zweryfikować instalację, wykonaj polecenie gcc -version w następujący sposób:
gcc --version
Wyświetli zainstalowaną wersję narzędzia GCC. Aby wyświetlić bardziej szczegółowe informacje o wersji, użyj opcji „-v”. Rozważ poniższe dane wyjściowe:
Tutaj pomyślnie zainstalowaliśmy narzędzie GCC. Rozumiemy, jak z niego korzystać. Stworzymy i wykonamy niektóre programy w języku C przy użyciu GCC.
Uruchom pierwszy program w C przez gcc
Utwórz podstawowy program c 'Witaj świecie!'. Utwórz plik „hello.c” i umieść w nim poniższy kod:
#include int main() { printf('Hello, world! '); return 0; }
Teraz skompiluj plik hello.c w następujący sposób:
gcc hello.c
Jeśli bezpośrednio uruchomimy hello.c, zgłosi błąd. Ustaw go jako wykonywalny, domyślnym plikiem wykonywalnym dla systemu Linux jest a.out. Aby uruchomić plik, wykonaj polecenie chmod w następujący sposób:
chmod a+x a.out
Teraz uruchom program c jako:
./a.out
Rozważ poniższe dane wyjściowe:
Przykłady poleceń GCC
Oto kilka przydatnych przykładów polecenia gcc:
Domyślnie polecenie gcc tworzy plik obiektowy jako 'a.out .' Jeśli chcesz zmienić domyślną nazwę pliku wyjściowego, użyj metody „-O” opcja.
Wykonajmy podstawowe polecenie gcc:
gcc hello.c
Powyższe polecenie wygeneruje plik obiektowy „a.out”. Aby określić nazwę pliku obiektowego, wykonaj następujące polecenie:
gcc hello.c -o hello
Wygeneruje plik wyjściowy „hello”. Rozważ poniższe dane wyjściowe:
Aby włączyć wszystkie ostrzeżenia na wyjściu, użyj metody '-Ściana' opcję za pomocą polecenia gcc. Utwórzmy zmienną w głównej funkcji hello.c. Rozważ poniższy kod:
cześć, c:
#include int main() { int a; printf('Hello, world! '); return 0; }
Jeśli skompilujemy powyższy kod za pomocą opcji -Wall. Będzie rzucać ostrzeżenia. Wykonaj poniższe polecenie, aby skompilować plik:
gcc -wall hello.c
Powyższe polecenie wyświetli ostrzeżenia. Rozważ poniższe dane wyjściowe:
Możemy jedynie uzyskać krokowy wynik procesu kompilacji.
Wygeneruj dane wyjściowe preprocesora
Używając opcji „-E”, możemy wygenerować jedynie dane wyjściowe procesu wstępnego. Rozważ poniższe polecenie:
gcc -E hello.c > hello.i
Z powyższego polecenia plik 'Cześć, ja' zawierający wstępnie przetworzone dane wyjściowe. Rozważ poniższe dane wyjściowe:
Utwórz kod zestawu
Aby wygenerować kod asemblera, wykonaj polecenie z opcją „-S”. Rozważ poniższe polecenie:
gcc -S hello.c > hello.s
Powyższe polecenie wygeneruje plik „hello.s.” plik zawierający kod zestawu. Rozważ poniższe dane wyjściowe:
Wygeneruj skompilowany kod
Edukacja Cassidy'ego Hutchinsona
Możemy wygenerować tylko skompilowany kod, używając opcji „-C”. Rozważ poniższe polecenie:
gcc -C hello.c
Powyższe polecenie wygeneruje plik „a.out”, zawierający wyłącznie kod maszynowy lub kod skompilowany. Rozważ poniższe dane wyjściowe:
Utwórz wszystkie pliki pośrednie procesu kompilacji
Możemy utworzyć wszystkie pliki pośrednie procesu kompilacji, używając opcji „-save-temp”. Rozważ poniższe dane wyjściowe:
gcc -save-temps hello.c
Powyższe polecenie wygeneruje jednocześnie wszystkie pliki pośrednie i pliki wykonywalne. Rozważ poniższe dane wyjściowe:
Możemy wyświetlić szczegółowe informacje o każdym kroku wykonywanym przez polecenie gcc. Aby to zrobić, wykonaj polecenie z opcją „-v”.
gcc -W -v hello.c
Rozważ poniższy snap danych wyjściowych:
Omówiliśmy kilka najbardziej przydatnych przykładów polecenia gcc. Ponieważ polecenie gcc zapewnia ogromną liczbę opcji, możesz utknąć w dowolnym miejscu podczas jego używania. Zobaczmy, jak samodzielnie uzyskać pomoc z terminala.
Podręcznik GCC
Jeśli utkniesz w dowolnym miejscu podczas korzystania z polecenia gcc, możesz uzyskać pomoc ze swojego terminala. Aby uzyskać dostęp do podręcznika z wiersza poleceń, wykonaj polecenie man w następujący sposób:
man gcc
Powyższe polecenie wyświetli instrukcję zawierającą opis oraz listę obsługiwanych opcji wraz z krótkim opisem. Rozważ poniższy snap danych wyjściowych:
możesz przewinąć dane wyjściowe, aby przeczytać więcej. Naciśnij klawisz „h”, aby uzyskać pomoc, i q, aby wyjść z instrukcji i wrócić do terminala.