Programowanie w systemie UNIX/gcc
gcc
architektura
[edytuj]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.
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
symbolic link
[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++