GCC версии

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

GCC версии

Непрочитанное сообщение Olej » 21 апр 2022, 22:42

Сегодня выпала такая напасть: простенькое приложение C++, которое компилировалось нормально в 2014 году и позже - компилируется с g++, но вылезает ошибка с Clang (подробнее см. Clang):

Код: Выделить всё

olej@R420:~/2022/Go/compare/fibo$ clang++ fibo_cc.cc -o fibo_cl
fibo_cc.cc:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^~~~~~~~~~
1 error generated.
Оказалось, что об этом много пишут - проблемы в несоответствии версий GCC & Clang.

Код: Выделить всё

olej@R420:~$ clang++ --version
clang version 10.0.0-4ubuntu1 
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

Код: Выделить всё

olej@R420:~$ g++ --version
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Код: Выделить всё

olej@R420:~/2022/Go/compare/fibo$ ls /usr/include/c++/
9
Не нравятся тебе include? :lol: На:

Код: Выделить всё

olej@R420:~/2022/Go/compare/fibo$ clang++ -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9  fibo_cc.cc -o fibo_cl
/usr/bin/ld: невозможно найти -lstdc++
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Отлично!
Но теперь ему не хватает расшаренных библиотек:

Код: Выделить всё

olej@R420:~/2022/Go/compare/fibo$ clang++ -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -L /usr/lib/gcc/x86_64-linux-gnu/9 fibo_cc.cc -o fibo_cl
Всё, успокоился. :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GCC версии

Непрочитанное сообщение Olej » 21 апр 2022, 22:59

Olej писал(а):
21 апр 2022, 22:42
проблемы в несоответствии версий GCC & Clang.
Устраняю несоответствия:

Код: Выделить всё

olej@R420:~$ sudo apt install g++-10
[sudo] пароль для olej:       
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libstdc++-10-dev
Предлагаемые пакеты:
  g++-10-multilib gcc-10-doc libstdc++-10-doc
Следующие НОВЫЕ пакеты будут установлены:
  g++-10 libstdc++-10-dev
Обновлено 0 пакетов, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 11,6 MB архивов.
После данной операции объём занятого дискового пространства возрастёт на 47,1 MB.
Хотите продолжить? [Д/н] y
Пол:1 http://ubuntu.volia.net/ubuntu-archive focal-updates/universe amd64 libstdc++-10-dev amd64 10.3.0-1ubuntu1~20.04 [1.759 kB]
Пол:2 http://ubuntu.volia.net/ubuntu-archive focal-updates/universe amd64 g++-10 amd64 10.3.0-1ubuntu1~20.04 [9.803 kB]
Получено 11,6 MB за 4с (2.753 kB/s) 
Выбор ранее не выбранного пакета libstdc++-10-dev:amd64.
(Чтение базы данных … на данный момент установлено 419269 файлов и каталогов.)
Подготовка к распаковке …/libstdc++-10-dev_10.3.0-1ubuntu1~20.04_amd64.deb …
Распаковывается libstdc++-10-dev:amd64 (10.3.0-1ubuntu1~20.04) …
Выбор ранее не выбранного пакета g++-10.
Подготовка к распаковке …/g++-10_10.3.0-1ubuntu1~20.04_amd64.deb …
Распаковывается g++-10 (10.3.0-1ubuntu1~20.04) …
Настраивается пакет libstdc++-10-dev:amd64 (10.3.0-1ubuntu1~20.04) …
Настраивается пакет g++-10 (10.3.0-1ubuntu1~20.04) …
Обрабатываются триггеры для man-db (2.9.1-1) …

Код: Выделить всё

olej@R420:~$ ls /usr/include/c++/
10  9
Для проблемы Clang всё решилось:

Код: Выделить всё

olej@R420:~/2022/Go/compare/fibo$ clang++ fibo_cc.cc -o fibo_cl
Никаких ошибок!
Но тем не менее:

Код: Выделить всё

olej@R420:~$ g++ --version
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Дефаултная версия GCC - 9.4

Как переключать версии GCC из разных установленных?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GCC версии

Непрочитанное сообщение Olej » 21 апр 2022, 23:08

Специально перешёл на другой компьютер, который не переустанавливался Mint как минимум с 2013 года, только обновлялся.
Здесь GCC:

Код: Выделить всё

olej@nvidia:~$ aptitude search gcc | grep ^i
i  gcc - компилятор C от GNU
i  gcc-10-base - GCC, набор компиляторов GNU (основной пакет)
i  gcc-5 - GNU C compiler
i  gcc-5-base - GCC, the GNU Compiler Collection (base package)
i  gcc-6-base - GCC, the GNU Compiler Collection (base package)
i A gcc-7 - компилятор C от GNU
i A gcc-7-base - GCC, набор компиляторов GNU (основной пакет)
i  gcc-8-base - GCC, набор компиляторов GNU (основной пакет)
i A gcc-9 - компилятор C от GNU
i A gcc-9-base - GCC, набор компиляторов GNU (основной пакет)
i A gcc-avr - GNU C compiler (cross compiler for avr)
i  gccgo-5 - GNU Go compiler
i  lib32gcc-s1 - GCC support library (32 bit Version)
i  lib32gcc1 - GCC support library (dependency package, 32bit)
i  libgcc-5-dev - GCC support library (development files)
i A libgcc-7-dev - GCC support library (development files)
i A libgcc-9-dev - GCC support library (development files)
i  libgcc-s1 - вспомогательная библиотека GCC
i  libgcc1 - GCC support library (dependency package)
i  libuno-cppuhelpergcc3-3 - LibreOffice UNO runtime environment -- CPPU helper library
i  libuno-purpenvhelpergcc3-3 - LibreOffice UNO runtime environment -- "purpose environment" helper
i  libuno-salhelpergcc3-3 - LibreOffice UNO runtime environment -- SAL helpers for C++ library
Здесь за годы накопились версии: 5, 6, 7, 8, 9, 10 !
Но:

Код: Выделить всё

olej@nvidia:~$ ls /usr/include/c++/
5  5.5.0  7  7.5.0  9
Ну, возможно во времена версий 6, 8, 10 мне нужен был gcc и не нужен был g++

Код: Выделить всё

olej@nvidia:~$ ls -l /usr/include/c++/
итого 36
drwxr-xr-x 12 root root 12288 дек 20  2018 5
lrwxrwxrwx  1 root root     1 апр 11  2018 5.5.0 -> 5
drwxr-xr-x 12 root root 12288 июл 12  2020 7
lrwxrwxrwx  1 root root     1 дек  4  2019 7.5.0 -> 7
drwxr-xr-x 13 root root 12288 апр  3 12:13 9
Olej писал(а):
21 апр 2022, 22:59
Как переключать версии GCC из разных установленных?
Но остаётся этот вопрос!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GCC версии

Непрочитанное сообщение Olej » 21 апр 2022, 23:17

Olej писал(а):
21 апр 2022, 23:08
Но остаётся этот вопрос!
Обычно это делается, если делается грамотно с помощью альтернатив, update-alternatives, см. alternatives...
Но:

Код: Выделить всё

olej@nvidia:~$ update-alternatives --display gcc
update-alternatives: ошибка: нет альтернатив для gcc
GCC при инсталляциях не устанавливает альтернативы?

Код: Выделить всё

olej@nvidia:~$ which gcc
/usr/bin/gcc

olej@nvidia:~$ ls -l `which gcc`
lrwxrwxrwx 1 root root 5 мар 20  2020 /usr/bin/gcc -> gcc-9

olej@nvidia:~$ ls -lL `which gcc`
-rwxr-xr-x 1 root root 1158288 мар  9 19:57 /usr/bin/gcc

Код: Выделить всё

olej@nvidia:~$ ls -l `which g++`
lrwxrwxrwx 1 root root 5 мар 20  2020 /usr/bin/g++ -> g++-9

olej@nvidia:~$ ls -lL `which g++`
-rwxr-xr-x 1 root root 1158288 мар  9 19:57 /usr/bin/g++
Ну вот после этого становится более-менее ясно:

Код: Выделить всё

olej@nvidia:~$ ls -lL /usr/bin/g++-*
-rwxr-xr-x 1 root root  911744 апр 11  2018 /usr/bin/g++-5
-rwxr-xr-x 1 root root 1055680 мар 26  2020 /usr/bin/g++-7
-rwxr-xr-x 1 root root 1158288 мар  9 19:57 /usr/bin/g++-9

Код: Выделить всё

olej@nvidia:~$ ls -lL /usr/bin/gcc-*
-rwxr-xr-x 1 root root  907648 апр 11  2018 /usr/bin/gcc-5
-rwxr-xr-x 1 root root 1047488 мар 26  2020 /usr/bin/gcc-7
-rwxr-xr-x 1 root root 1158288 мар  9 19:57 /usr/bin/gcc-9
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-ar
-rwxr-xr-x 1 root root   31264 апр 11  2018 /usr/bin/gcc-ar-5
-rwxr-xr-x 1 root root   35296 мар 26  2020 /usr/bin/gcc-ar-7
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-ar-9
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-nm
-rwxr-xr-x 1 root root   31264 апр 11  2018 /usr/bin/gcc-nm-5
-rwxr-xr-x 1 root root   35296 мар 26  2020 /usr/bin/gcc-nm-7
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-nm-9
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-ranlib
-rwxr-xr-x 1 root root   31264 апр 11  2018 /usr/bin/gcc-ranlib-5
-rwxr-xr-x 1 root root   35296 мар 26  2020 /usr/bin/gcc-ranlib-7
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-ranlib-9

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GCC версии

Непрочитанное сообщение Olej » 21 апр 2022, 23:45

Olej писал(а):
21 апр 2022, 23:17
Ну вот после этого становится более-менее ясно:
Тогда для полноты картины следует восполнить:

Код: Выделить всё

olej@nvidia:~$ sudo apt install gcc-10 g++-10
[sudo] пароль для olej:       
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  cpp-10 libasan6 libgcc-10-dev libstdc++-10-dev
Предлагаемые пакеты:
  gcc-10-locales g++-10-multilib gcc-10-doc gcc-10-multilib libstdc++-10-doc
Следующие НОВЫЕ пакеты будут установлены:
  cpp-10 g++-10 gcc-10 libasan6 libgcc-10-dev libstdc++-10-dev
Обновлено 0 пакетов, установлено 6 новых пакетов, для удаления отмечено 0 пакетов, и 49 пакетов не обновлено.
Необходимо скачать 42,1 MB архивов.
После данной операции объём занятого дискового пространства возрастёт на 151 MB.
Хотите продолжить? [Д/н] y
Пол:1 http://ubuntu.netforce.hosting/ubuntu focal-updates/universe amd64 cpp-10 amd64 10.3.0-1ubuntu1~20.04 [8 610 kB]
Пол:2 http://ubuntu.netforce.hosting/ubuntu focal-updates/main amd64 libasan6 amd64 10.3.0-1ubuntu1~20.04 [2 062 kB]
Пол:3 http://ubuntu.netforce.hosting/ubuntu focal-updates/main amd64 libgcc-10-dev amd64 10.3.0-1ubuntu1~20.04 [2 342 kB]
Пол:4 http://ubuntu.netforce.hosting/ubuntu focal-updates/universe amd64 gcc-10 amd64 10.3.0-1ubuntu1~20.04 [17,5 MB]                
Пол:5 http://ubuntu.netforce.hosting/ubuntu focal-updates/universe amd64 libstdc++-10-dev amd64 10.3.0-1ubuntu1~20.04 [1 759 kB]     
Пол:6 http://ubuntu.netforce.hosting/ubuntu focal-updates/universe amd64 g++-10 amd64 10.3.0-1ubuntu1~20.04 [9 803 kB]               
Получено 42,1 MB за 11с (3 752 kB/s)                                                                                                 
Выбор ранее не выбранного пакета cpp-10.
(Чтение базы данных … на данный момент установлено 440999 файлов и каталогов.)
Подготовка к распаковке …/0-cpp-10_10.3.0-1ubuntu1~20.04_amd64.deb …
Распаковывается cpp-10 (10.3.0-1ubuntu1~20.04) …
Выбор ранее не выбранного пакета libasan6:amd64.
Подготовка к распаковке …/1-libasan6_10.3.0-1ubuntu1~20.04_amd64.deb …
Распаковывается libasan6:amd64 (10.3.0-1ubuntu1~20.04) …
Выбор ранее не выбранного пакета libgcc-10-dev:amd64.
Подготовка к распаковке …/2-libgcc-10-dev_10.3.0-1ubuntu1~20.04_amd64.deb …
Распаковывается libgcc-10-dev:amd64 (10.3.0-1ubuntu1~20.04) …
Выбор ранее не выбранного пакета gcc-10.
Подготовка к распаковке …/3-gcc-10_10.3.0-1ubuntu1~20.04_amd64.deb …
Распаковывается gcc-10 (10.3.0-1ubuntu1~20.04) …
Выбор ранее не выбранного пакета libstdc++-10-dev:amd64.
Подготовка к распаковке …/4-libstdc++-10-dev_10.3.0-1ubuntu1~20.04_amd64.deb …
Распаковывается libstdc++-10-dev:amd64 (10.3.0-1ubuntu1~20.04) …
Выбор ранее не выбранного пакета g++-10.
Подготовка к распаковке …/5-g++-10_10.3.0-1ubuntu1~20.04_amd64.deb …
Распаковывается g++-10 (10.3.0-1ubuntu1~20.04) …
Настраивается пакет libasan6:amd64 (10.3.0-1ubuntu1~20.04) …
Настраивается пакет cpp-10 (10.3.0-1ubuntu1~20.04) …
Настраивается пакет libgcc-10-dev:amd64 (10.3.0-1ubuntu1~20.04) …
Настраивается пакет gcc-10 (10.3.0-1ubuntu1~20.04) …
Настраивается пакет libstdc++-10-dev:amd64 (10.3.0-1ubuntu1~20.04) …
Настраивается пакет g++-10 (10.3.0-1ubuntu1~20.04) …
Обрабатываются триггеры для man-db (2.9.1-1) …
Обрабатываются триггеры для libc-bin (2.31-0ubuntu9.7) …

Код: Выделить всё

olej@nvidia:~$ ls -lL /usr/bin/g++-*
-rwxr-xr-x 1 root root  830184 мая 29  2021 /usr/bin/g++-10
-rwxr-xr-x 1 root root  911744 апр 11  2018 /usr/bin/g++-5
-rwxr-xr-x 1 root root 1055680 мар 26  2020 /usr/bin/g++-7
-rwxr-xr-x 1 root root 1158288 мар  9 19:57 /usr/bin/g++-9

Код: Выделить всё

olej@nvidia:~$ ls -lL /usr/bin/gcc-*
-rwxr-xr-x 1 root root  826088 мая 29  2021 /usr/bin/gcc-10
-rwxr-xr-x 1 root root  907648 апр 11  2018 /usr/bin/gcc-5
-rwxr-xr-x 1 root root 1047488 мар 26  2020 /usr/bin/gcc-7
-rwxr-xr-x 1 root root 1158288 мар  9 19:57 /usr/bin/gcc-9
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-ar
-rwxr-xr-x 1 root root   23080 мая 29  2021 /usr/bin/gcc-ar-10
-rwxr-xr-x 1 root root   31264 апр 11  2018 /usr/bin/gcc-ar-5
-rwxr-xr-x 1 root root   35296 мар 26  2020 /usr/bin/gcc-ar-7
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-ar-9
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-nm
-rwxr-xr-x 1 root root   23080 мая 29  2021 /usr/bin/gcc-nm-10
-rwxr-xr-x 1 root root   31264 апр 11  2018 /usr/bin/gcc-nm-5
-rwxr-xr-x 1 root root   35296 мар 26  2020 /usr/bin/gcc-nm-7
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-nm-9
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-ranlib
-rwxr-xr-x 1 root root   23080 мая 29  2021 /usr/bin/gcc-ranlib-10
-rwxr-xr-x 1 root root   31264 апр 11  2018 /usr/bin/gcc-ranlib-5
-rwxr-xr-x 1 root root   35296 мар 26  2020 /usr/bin/gcc-ranlib-7
-rwxr-xr-x 1 root root   35464 мар  9 19:57 /usr/bin/gcc-ranlib-9

Код: Выделить всё

olej@nvidia:~$ ls /usr/include/c++/
10  5  5.5.0  7  7.5.0	9

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GCC версии

Непрочитанное сообщение Olej » 21 апр 2022, 23:56

Olej писал(а):
21 апр 2022, 23:45
Тогда для полноты картины следует восполнить:
На всякий случай:

Код: Выделить всё

olej@nvidia:~$ sudo update-alternatives --remove-all gcc

olej@nvidia:~$ update-alternatives --list gcc
update-alternatives: ошибка: нет альтернатив для gcc
Пошли добавлять:

Код: Выделить всё

olej@nvidia:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 70 --slave /usr/bin/g++ g++ /usr/bin/g++-9
update-alternatives: используется /usr/bin/gcc-9 для предоставления /usr/bin/gcc (gcc) в автоматическом режиме

olej@nvidia:~$ update-alternatives --list gcc
/usr/bin/gcc-9

Код: Выделить всё

olej@nvidia:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 60 --slave /usr/bin/g++ g++ /usr/bin/g++-10

olej@nvidia:~$ update-alternatives --list gcc
/usr/bin/gcc-10
/usr/bin/gcc-9

Код: Выделить всё

olej@nvidia:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50 --slave /usr/bin/g++ g++ /usr/bin/g++-7

olej@nvidia:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40 --slave /usr/bin/g++ g++ /usr/bin/g++-5

olej@nvidia:~$ update-alternatives --list gcc
/usr/bin/gcc-10
/usr/bin/gcc-5
/usr/bin/gcc-7
/usr/bin/gcc-9

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GCC версии

Непрочитанное сообщение Olej » 22 апр 2022, 00:02

Olej писал(а):
21 апр 2022, 23:56
Пошли добавлять:

Код: Выделить всё

olej@nvidia:~$ galternatives &
[1] 98944
Снимок экрана от 2022-04-22 00-01-19.png
Снимок экрана от 2022-04-22 00-01-19.png (50.33 КБ) 811 просмотров

Код: Выделить всё

olej@nvidia:~$ update-alternatives --display gcc
gcc - автоматический режим
  link best version is /usr/bin/gcc-9
  ссылка сейчас указывает на /usr/bin/gcc-9
  link gcc is /usr/bin/gcc
  slave g++ is /usr/bin/g++
/usr/bin/gcc-10 — приоритет 60
  подчинённый g++: /usr/bin/g++-10
/usr/bin/gcc-5 — приоритет 40
  подчинённый g++: /usr/bin/g++-5
/usr/bin/gcc-7 — приоритет 50
  подчинённый g++: /usr/bin/g++-7
/usr/bin/gcc-9 — приоритет 70
  подчинённый g++: /usr/bin/g++-9

Код: Выделить всё

olej@nvidia:~$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Код: Выделить всё

olej@nvidia:~$ g++ --version
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GCC версии

Непрочитанное сообщение Olej » 22 апр 2022, 00:20

Изменяем:

Код: Выделить всё

olej@nvidia:~$ sudo update-alternatives --config gcc
[sudo] пароль для olej:       
Есть 4 варианта для альтернативы gcc (предоставляет /usr/bin/gcc).

  Выбор   Путь         Приор Состояние
------------------------------------------------------------
* 0            /usr/bin/gcc-9    70        автоматический режим
  1            /usr/bin/gcc-10   60        ручной режим
  2            /usr/bin/gcc-5    40        ручной режим
  3            /usr/bin/gcc-7    50        ручной режим
  4            /usr/bin/gcc-9    70        ручной режим

Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: используется /usr/bin/gcc-10 для предоставления /usr/bin/gcc (gcc) в ручном режиме

Код: Выделить всё

olej@nvidia:~$ update-alternatives --display gcc
gcc - ручной режим
  link best version is /usr/bin/gcc-9
  ссылка сейчас указывает на /usr/bin/gcc-10
  link gcc is /usr/bin/gcc
  slave g++ is /usr/bin/g++
/usr/bin/gcc-10 — приоритет 60
  подчинённый g++: /usr/bin/g++-10
/usr/bin/gcc-5 — приоритет 40
  подчинённый g++: /usr/bin/g++-5
/usr/bin/gcc-7 — приоритет 50
  подчинённый g++: /usr/bin/g++-7
/usr/bin/gcc-9 — приоритет 70
  подчинённый g++: /usr/bin/g++-9

Код: Выделить всё

olej@nvidia:~$ gcc --version
gcc (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Код: Выделить всё

olej@nvidia:~$ g++ --version
g++ (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Снимок экрана от 2022-04-22 00-21-33.png
Снимок экрана от 2022-04-22 00-21-33.png (50.85 КБ) 808 просмотров
P.S. В принципе, выбор текущей альтернативы можете делать и радиокнопками в GUI galternatives

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GCC версии

Непрочитанное сообщение Olej » 22 апр 2022, 00:46

Olej писал(а):
22 апр 2022, 00:20
Изменяем:
Задача полностью разрешена. :-)
Последнее:
В публикациях часто пишут: не изменяйте версию GCC, если текущая версия GCC версия которой компилировалось ядро системы не совпадают, то могут быть серьёзные проблемы.
Меня всё занимало: о чём это они?

Я так понимаю, что о том крайне редком (исчезающе малой вероятности) когда:
- с компилятором GCC естественно устанавливается соответствующая ему версия главной библиотеки C, библиотеки libc.so - системных вызовов.
- в библиотеке могут быть новые системные вызовы, которых не было в предыдущих ядра...
- если компилятор ваш код скомпилирует на новый системный вызов - здесь крах, приложения.
- если будет альтернативно выбрана более старая версия GCC (чем дефаултная), то таких конфликтов быть не может - в kernel Linux запрещено изменять формат вызова существующих системных вызовов и удалять старые неиспользуемые вызовы... это политика разработчиков ядра.

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя