Przejdź do zawartości

Programowanie w systemie UNIX/gcc

Z Wikibooks, biblioteki wolnych podręczników.

gcc

architektura

[edytuj]
Potok kompilacji w GCC: preprocesor, asembler i linker
Architektura gcc

GCC stosuje 3-etapową architekturę typową dla kompilatorów wielojęzycznych i wieloprocesorowych. Wszystkie drzewa programów są konwertowane na wspólną abstrakcyjną reprezentację na „środkowym końcu”, umożliwiając współdzielenie funkcji generowania optymalnego kodu i kodu binarnego we wszystkich językach.

Kroki lexera i parsera wykonane dla prostego programu napisanego w C


Interfejs front end składają się z przetwarzania wstępnego ( ang. preprocessing), analizy leksykalnej, analizy składniowej (parsowania) i analizy semantycznej. Celem interfejsów kompilatora jest akceptowanie lub odrzucanie kandydujących programów zgodnie z gramatyką i semantyką języka, identyfikowanie błędów i obsługa prawidłowych reprezentacji programów na późniejszych etapach kompilatora.

lokalizacja

[edytuj]

typowa

/usr/bin/gcc


wersje

[edytuj]

Wersje

  • Możesz mieć kilka wersji gcc na swoim komputerze
  • Pakiet gcc-8 został wycofany z domyślnych repozytoriów Ubuntu 22.04 i nowszych, ale nadal jest dostępny w domyślnych repozytoriach Ubuntu 20.04.[1]

Jeśli są różne wersje

sudo apt search gcc- | more
ls /usr/bin/gcc*

przykładowy wynik:

gcc-10  gcc-12     gcc-ar-11  gcc-nm-10  gcc-nm-12      gcc-ranlib-11
gcc-11  gcc-ar-10  gcc-ar-12  gcc-nm-11  gcc-ranlib-10  gcc-ranlib-12

Zmienna :

MAX_GCC_VERSION=9

sprawdzamy

echo $MAX_GCC_VERSION


sudo apt install gcc-$MAX_GCC_VERSION g  -$MAX_GCC_VERSION


[edytuj]

Sprawdzamy[2]

ls -la /usr/bin | grep gcc-
ls -la /usr/bin | grep g  -


usuwamy stare symlinki:

rm /usr/bin/gcc
rm /usr/bin/g  

tworzymy nowe:

ln -s /usr/bin/gcc-4.3 /usr/bin/gcc
ln -s /usr/bin/g  -4.3 /usr/bin/g  

i sprawdzamy

ls -la /usr/bin/ | grep gcc
ls -la /usr/bin/ | grep g  

Dodaj dowiązania symboliczne ( ang. symbolic linc) w folderach CUDA:

sudo ln -s /usr/bin/gcc-$MAX_GCC_VERSION /usr/local/cuda/bin/gcc 
sudo ln -s /usr/bin/g  -$MAX_GCC_VERSION /usr/local/cuda/bin/g  

instalacja

[edytuj]
sudo apt install build-essential
sudo apt -y install gcc-10 g  -10 gcc-11 g  -11 gcc-12 g  -12

Jak przełączać się między wieloma wersjami kompilatorów GCC i G w systemie Ubuntu ?

[edytuj]

update-alternatives[3]


sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 7
sudo update-alternatives --install /usr/bin/g   g   /usr/bin/g  -7 7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9
sudo update-alternatives --install /usr/bin/g   g   /usr/bin/g  -9 9
 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
sudo update-alternatives --install /usr/bin/g   g   /usr/bin/g  -10 10


sudo update-alternatives --config gcc
sudo update-alternatives --config g  

Przypisy