Перейти к содержимому

Как узнать версию gcc

  • автор:

как узнать каким Gcc было собрано ядро?

есть система, нужно собрать к ней пару модулей, но при сборке их с пом. gcc-3.4 получаю depmod: *** Unresolved symbols in /lib/modules/2.4.27-ow1/kernel/drivers/scsi/FastTrak.o Подозреваю, что нужен более другой gcc.

drd ★★
06.03.06 18:40:24 MSK

Re: как узнать каким Gcc было собрано ядро?

> как узнать каким Gcc было собрано ядро?

no-dashi ★★★★★
( 06.03.06 18:42:52 MSK )

Re: как узнать каким Gcc было собрано ядро?

JB ★★★★★
( 06.03.06 18:50:16 MSK )
Ответ на: Re: как узнать каким Gcc было собрано ядро? от no-dashi 06.03.06 18:42:52 MSK

Re: как узнать каким Gcc было собрано ядро?

Курил, но версии gcc там не увидел.
Невнимательно смотрел?

drd ★★
( 06.03.06 18:51:38 MSK ) автор топика
Ответ на: Re: как узнать каким Gcc было собрано ядро? от JB 06.03.06 18:50:16 MSK

Re: как узнать каким Gcc было собрано ядро?

drd ★★
( 06.03.06 18:53:02 MSK ) автор топика
Ответ на: Re: как узнать каким Gcc было собрано ядро? от drd 06.03.06 18:51:38 MSK

Re: как узнать каким Gcc было собрано ядро?

$ modinfo /lib/modules/2.6.15/kernel/drivers/net/eepro100.ko | grep mag vermagic: 2.6.15 PENTIUMIII REGPARM 4KSTACKS gcc-4.0

no-dashi ★★★★★
( 06.03.06 19:14:55 MSK )
Ответ на: Re: как узнать каким Gcc было собрано ядро? от no-dashi 06.03.06 19:14:55 MSK

Re: как узнать каким Gcc было собрано ядро?

drd@badaboom:~$ /sbin/modinfo /lib/modules/2.4.27-ow1/kernel/drivers/scsi/sym53c8xx.o
filename: /lib/modules/2.4.27-ow1/kernel/drivers/scsi/sym53c8xx.o
description:
author:
license: «GPL»
parm: sym53c8xx string
Видать modinfo другой

drd ★★
( 06.03.06 19:32:15 MSK ) автор топика

Re: как узнать каким Gcc было собрано ядро?

IMHO Unresolved symbols и версия GCC никак не связаны .. или я что то путаю ?

robot12 ★★★★★
( 06.03.06 21:07:26 MSK )
Ответ на: Re: как узнать каким Gcc было собрано ядро? от robot12 06.03.06 21:07:26 MSK

Re: как узнать каким Gcc было собрано ядро?

Эээ.. не знаю. Это проблема.
Собрал 2.4.32 с gcc-3.4, делаю depmod и получаю
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/drivers/net/ppp_generic.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/drivers/net/pppoe.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/bluetooth/bluez.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/bluetooth/l2cap.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/bluetooth/sco.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/ipv4/netfilter/ip_conntrack.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/ipv4/netfilter/ip_queue.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/ipv4/netfilter/ip_tables.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/ipv4/netfilter/ipt_REJECT.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/ipv4/netfilter/iptable_filter.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/ipv4/netfilter/iptable_mangle.o
depmod: *** Unresolved symbols in /lib/modules/2.4.32-ow1/kernel/net/ipv4/netfilter/iptable_nat.o

а если использовать gcc-4.0.3, то еще на этапе make bzImage отваливаемся:
/usr/src/2.4.32/linux-2.4.32/include/linux/byteorder/swab.h:200: warning: type qualifiers ignored on function return type
In file included from /usr/src/2.4.32/linux-2.4.32/include/linux/prefetch.h:13,
from /usr/src/2.4.32/linux-2.4.32/include/linux/list.h:6,
from /usr/src/2.4.32/linux-2.4.32/include/linux/wait.h:14,
from /usr/src/2.4.32/linux-2.4.32/include/linux/fs.h:12,
from /usr/src/2.4.32/linux-2.4.32/include/linux/capability.h:17,
from /usr/src/2.4.32/linux-2.4.32/include/linux/binfmts.h:5,
from /usr/src/2.4.32/linux-2.4.32/include/linux/sched.h:9,
from /usr/src/2.4.32/linux-2.4.32/include/linux/mm.h:4,
from /usr/src/2.4.32/linux-2.4.32/include/linux/slab.h:14,
from /usr/src/2.4.32/linux-2.4.32/include/linux/proc_fs.h:5,
from init/main.c:15:
/usr/src/2.4.32/linux-2.4.32/include/asm/processor.h:75: error: array type has incomplete element type
make: *** [init/main.o] Error 1

Версия gcc

Ошибка в понимании того, как работает ваша Shell-оболочка. Одной и причин этого является убогость и инженерные недостатки Bash.

В вашем случае нужно делать либо:

Либо задать переменную окружения PATH :

$ export PATH=/home/alexey/work1/buildroot/output/host/bin/$PATH $ arm-buildroot-linux-uclibcgnueabi-gcc --version 

EXL ★★★★★
( 07.09.19 14:15:09 MSK )
Последнее исправление: EXL 07.09.19 14:17:36 MSK (всего исправлений: 3)

«Хочу узнать версию.» завернут в код. Глаза режет

xDShot ★★★★★
( 07.09.19 14:16:15 MSK )
Ответ на: комментарий от EXL 07.09.19 14:15:09 MSK

Одной и причин этого является убогость и инженерные недостатки Bash.

Вообще . в $PATH не включают вроде как для безопасности. Чтобы та же команда ls в разных каталогах не меняла своего значения.

xaizek ★★★★★
( 07.09.19 14:18:43 MSK )
Ответ на: комментарий от EXL 07.09.19 14:15:09 MSK

Щас бы троянчики засовывать в рабочий каталог вместо запуска бинарников с PATH.

xDShot ★★★★★
( 07.09.19 14:18:47 MSK )
Ответ на: комментарий от xaizek 07.09.19 14:18:43 MSK

Это всё верно, но я поддержу EXL , что сообщения об ошибках в bash убоги. Вот как сделано в Windows powershell:

arm-buildroot-linux-uclibcgnueabi-gcc --version arm-buildroot-linux-uclibcgnueabi-gcc : Имя "arm-buildroot-linux-uclibcgnueabi-gcc" не распознано как имя командлета,функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку. Suggestion [3,General]: Команда arm-buildroot-linux-uclibcgnueabi-gcc не найдена, однако существует в текущем расположении. По умолчанию оболочка Windows PowerShell не загружает команды из текущего расположения. Если вы уверены в надежности команды, введите ".\arm-buildroot-linux-uclibcgnueabi-gcc". Для получения дополнительных сведений вызовите справку с помощью команды "get-help about_Command_Precedence". 

ИМХО, подобный Suggestion был бы полезен и bash..

fsb4000 ★★★★★
( 07.09.19 14:28:06 MSK )
Последнее исправление: fsb4000 07.09.19 14:29:31 MSK (всего исправлений: 1)

Как проверить версию GCC в составе дистрибутива Ubuntu последней desktop версии?

Добрый вечер!
Подскажите, как можно узнать заранее версию входящего в состав дистрибутива компилятора? Спасибо.

  • Вопрос задан более двух лет назад
  • 492 просмотра

Комментировать

Решения вопроса 2

kotomyava

Системный администратор

На https://packages.ubuntu.com/ можно проверить. Для debian https://packages.debian.org/stable/

Ответ написан более двух лет назад

Комментировать

Нравится 3 Комментировать

xotkot

хорошо есть и хорошо весьма

Как узнать версию gcc

Рассмотрим создание первой простейшей программы на языке Си с помощью компилятора GCC , который на сегодняшний день является одим из наиболее популярных компиляторов для Cи и который доступен для разных платформ. Более подобному информацию о GCC можно получить на официальном сайте проекта https://gcc.gnu.org/.

Набор компиляторов GCC распространяется в различных версиях. Для Windows одной из наиболее популярных версий является пакет средств для разработки от некоммерческого проекта MSYS2 . Следует отметить, что для MSYS2 требуется 64-битная версия Windows 7 и выше (то есть Vista, XP и более ранние версии не подходят)

Итак, загрузим программу установки MSYS2 с официального сайта MSYS2:

Установка MSYS для разработки под С

После загрузки запустим программу установки:

Установка пакета mingw-w64 и msys2 на Windows

На первом шаге установки будет предложено установить каталог для установки. По умолчанию это каталог C:\msys64:

Установка компиляторов Си MSYS2 на Windows

Оставим каталог установки по умолчанию (при желании можно изменить). На следующем шаге устанавливаются настройки для ярлыка для меню Пуск, и затем собственно будет произведена установка. После завершения установки нам отобразить финальное окно, в котором нажмем на кнопку Завершить

Установка компиляторов MSYS2 на Windows

После завершения установки запустится консольное приложение MSYS2.exe. Если по каким-то причинам оно не запустилось, то в папке установки C:/msys64 надо найти файл usrt_64.exe :

компиляторы MSYS2.exe на Windows

Теперь нам надо установить собственно набор компиляторов GCC. Для этого введем в этом приложении следующую команду:

pacman -S mingw-w64-ucrt-x86_64-gcc

Для управления пакетами MSYS2 использует пакетный менеджер Packman. И данная команда говорит пакетному менелжеру packman установить пакет mingw-w64-ucrt-x86_64-gcc , который представляет набор компиляторов GCC (название устанавливаемого пакета указывается после параметра -S ).

Установка компиляторов MSYS2 на Windows

и после завершения установки мы можем приступать к программированию на языке Си. Если мы откроем каталог установки и зайдем в нем в папку C:\msys64\ucrt64\bin , то найдем там все необходимые файлы компиляторов:

Компилятор GCC на Windows

В частности, файл gcc.exe как раз и будет представлять компилятор для языка Си.

Далее для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды. Для этого можно в окне поиска в Windows ввести «изменение переменных среды текущего пользователя»:

изменение переменных среды текущего пользователя в Windows

Нам откроется окно Переменныех среды:

Добавление GCC в переменные среды на Windows

И добавим путь к компилятору C:\msys64\ucrt64\bin :

Определение пути к компилятору GCC в переменных среды на Windows

Чтобы убедиться, что набор компиляторов GCC успешно установлен, введем следующую команду:

gcc --version

В этом случае нам должна отобразиться версия компиляторов

Версия компиляторов MSYS2 GCC на Windows

Создание первой программы

Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода. Можно взять распространенный редактор Visual Studio Code или даже обычный встроенный Блокнот.

Итак, создадим на жестком диске папку для исходных файлов. А в этой папке создадим новый файл, который назовем hello.c .

Первая программа на Си в Windows

В моем случае файл hello.c находится в папке C:\c.

Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:

#include // подключаем заголовочный файл stdio.h int main(void) // определяем функцию main < // начало функции printf("Hello METANIT.COM!\n"); // выводим строку на консоль return 0; // выходим из функции >// конец функции

Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка

#include

Директива include подключает заголовочный файл stdio.h, который содержит определение функции printf, которая нужна для вывода строки на консоль.

Далее идет определение функции int main(void) . Функция main должна присутствовать в любой программе на Си, с нее собственно и начинается выполнение приложения.

Ключевое слово int в определении функции int main(void) говорит о том, что функция возвращает целое число. А слово void в скобках указывает, что функция не принимает параметров.

Тело функции main заключено в фигурные скобки <>. В теле функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello METANIT.COM!».

В конце осуществляем выход из функции с помощью оператора return . Так как функция должна возвращать целое число, то после return указывается число 0. Ноль используется в качестве индикатора успешного завершения программы.

После каждого действия в функции ставятся точка с запятой.

Язык программирования Си в Visual Studio Code

Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:

cd C:\c

Чтобы скомпилировать исходный код, необходимо компилятору gcc передать в качестве параметра файл hello.c:

gcc hello.c

После этого будет скомпилирован исполняемый файл, который в Windows по умолчанию называется a.exe . И мы можем обратиться к этому файлу

a.exe

и в этом случае консоль выведет строку «Hello METANIT.COM!», собственно как и прописано в коде.

Стоит отметить, что мы можем переопределить имя компилируемого файла с помощью флага -o и передав ему имя файла, в который будет компилироваться программа. Например:

gcc hello.c -o hello.exe

В этом случае программа будет компилироваться в файл hello.exe , который мы также запустить.

Запуск компилятора GCC на Windows

Чтобы не приходилось вводить две команды: одну для компиляции программы и другую для ее запуска, мы можем объединить команды:

gcc hello.c -o hello.exe & hello

Эта команда сначала компилирует код в файл hello.exe, а потом сразу запускает его.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *