LINUX.ORG.RU

Установка старой версии GCC

 , ,


0

1

Здравствуйте. Подскажите как поставить старую версию GCC 4.8 ? Пытался собрать Open_Wrt из ислодников, а он ругается, что ему компилятор нужен старый.. ( Build dependency: Please install the GNU C Compiler (gcc) 4.8 or later Build dependency: Please install the GNU C++ Compiler (g++) 4.8 or later )

несмотря на то, что в системе уже стоял GCC 11 версии… Команда sudo apt install gcc-4.8 положительных результатов не дала…

( E: Невозможно найти пакет gcc-4.8 E: Не удалось найти ни один пакет с помощью шаблона «gcc-4.8» )

Подскажите как установить?


Ответ на: комментарий от fsb4000

build-essential самой новой версии (12.9ubuntu3)… Но в последствии я компилятор 11 рерсии снёс ручками.. в надежде что на его место компилятор 4.8 версии встанет.. пока уменя не установлен компилятор… Но когда я пытался собирать опен врт из исходников компиляор 11 версии стоял..

timyr
() автор топика
Ответ на: комментарий от i586

Вы имеете в виду то что сказал «fsb4000» (Все у него установлено. Просто старые скрипты не могут распарсить номер версии 11.) ??? Тогда подскажите как исправить ситуацию..?

timyr
() автор топика
Ответ на: комментарий от rupert

А в текстовом редакторе подправить.. А какие строки добавить? Вот для примера этот файл: https://github.com/openwrt-mirror/openwrt/blob/master/include/prereq-build.mk?ysclid=l4veng09pk572823084

С 27 по 35 строку про версию компилятора написано.. Может туда про 11 версию компилятора что-то написать нужно? Подскажите..

timyr
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

4.8 or later

Вот народ.

«Я собираю программу на компьютере для другого компьютера и оно пишет not found» )))

1. Host platform/OS ?

2. Target platform?

3. OpenWrt source tag?

и вообще:

https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem

kindof
()
Ответ на: комментарий от firkax

sudo apt install gcc-9 g++-9 Чтение списков пакетов… Готово Построение дерева зависимостей… Готово Чтение информации о состоянии… Готово
Уже установлен пакет g++-9 самой новой версии (9.4.0-5ubuntu1). Уже установлен пакет gcc-9 самой новой версии (9.4.0-5ubuntu1). Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 129 пакетов не обновлено.

Но при этом ошибка всёравно не проподает.. всёравно жалуется и хочет древний компилятор… какбуд-то gcc-9 не видит..

timyr
() автор топика
Ответ на: комментарий от kindof

Если я вас правильно понял:.. У меня Ubuntu 22.04 LTS, проц: AMD® Athlon(tm) ii x3 460 processor × 3 , опенврт: openwrt.git -b v18.06.2

А вот содержание файла prereq-build.mk : http://paste.org.ru/?f7axmn Может знающий человек подправит что нужно..

timyr
() автор топика
Ответ на: комментарий от timyr

Если я вас правильно понял:.. У меня Ubuntu 22.04 LTS, проц: AMD® Athlon(tm) ii x3 460 processor × 3 , опенврт: openwrt.git -b v18.06.2

уже что-то

sudo apt remove -y build-essential gcc g++

sudo apt autoremove

sync

sudo apt update

sudo apt install build-essential gawk gcc-multilib flex git gettext libncurses5-dev libssl-dev python3-distutils zlib1g-dev


kindof
()
Ответ на: комментарий от firkax

На мой взгляд единственный use-case для докера это показывать его на уроках как пример того, чего не надо делать.

То есть адекватного ответа не будет. Ты сам то докер видел хоть раз в жизни в своей консоли?

adn ★★★★
()
Ответ на: комментарий от timyr

Если вы знаете рецепт решения проблемы, то озвучьте пожалуйста.. Что нужно сделать? Если можно поподробней почти чайнику.

ну я же написал сразу первый этап.

Установка старой версии GCC (комментарий)

но фидбека не было ((

получилось? продолжаем:

gcc --version

g++ --version

kindof
()
Ответ на: комментарий от kindof

Сделал как вы сказали… http://paste.org.ru/?a8cwq6 Можно уже пробовать компилировать исходники или ещё что-то нужно сделать?

timyr
() автор топика
Последнее исправление: timyr (всего исправлений: 1)
Ответ на: комментарий от adn

Почему «фу» в данном случае? Это же самый очевидный use-case для докера? Очень удобно.

самое очевидное – подправить ошибку в мейкфайле и не разводить кучу неоправданной возни. Вам бы только доказать всему миру что докер нужен

pihter ★★★★★
()
Ответ на: комментарий от kindof

Ваша помошь нужна..!! Все эти команды я выполнил..: sudo apt remove -y build-essential gcc g++

sudo apt autoremove

sync

sudo apt update

sudo apt install build-essential gawk gcc-multilib flex git gettext libncurses5-dev libssl-dev python3-distutils zlib1g-dev

Но пока без изменений…

timyr
() автор топика
Последнее исправление: timyr (всего исправлений: 1)
Ответ на: комментарий от kindof

Я выполнял эти команды.. gcc –version ? g++ –version ? Вот их вывод: http://paste.org.ru/?oyjm0u Дорогой kindof, как я понял Вы большой спец по вопросу опенврт.. Если возможно.., как с вами можно связаться вацап или телеграмм..?

timyr
() автор топика
Ответ на: комментарий от timyr

Я выполнял эти команды.

тогда и пиши здесь, чо туда-сюда скакать три обратных апострофа (под Ё) текст три обратных апострофа

gcc --version ?
g++ --version ?
gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0
Copyright (C) 2021 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.

g++ (Ubuntu 11.2.0-19ubuntu1) 11.2.0
Copyright (C) 2021 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.

как с вами можно связаться вацап или телеграмм..?

а что там - секреты? пиши здесь

kindof
()
Ответ на: комментарий от timyr

Сейчас что делать дальше? Жду ваших советов..

sudo  apt install build-essential ccache ecj fastjar file g++ gawk gettext git java-propose-classpath libelf-dev libncurses5-dev libncursesw5-dev libssl-dev python2-minimal unzip wget  python3-setuptools python3-dev rsync subversion swig time xsltproc zlib1g-dev nano

Если ок, продолжаем

kindof
()
Ответ на: комментарий от pihter

самое очевидное – подправить ошибку в мейкфайле и не разводить кучу неоправданной возни

А если надо какой-нибудь древний gcc 2.95? Или тестировать софт, что он собирается разными версиями? Что делать в таком случае будешь?

adn ★★★★
()
Ответ на: комментарий от adn

Я довольно давно открыл для себя концепцию каталогов: можно много разных версий одной и той же программы разложить по каталогам. gcc это же в конечном счёте бинарь, да? Ну и симлинки в помощь скриптотестировщикам.

Наверное, где-то действительно докер нужен, но вот текущий тред - отличная иллюстрация. Вместо исправления очевидной проблемы, стремитесь сразу же воткнуть свой молоток от всех гвоздей. И так на моем судном опыте везде, где я его встречал. Вместо решения очевидной проблемы, плодите лишнюю сущность, лишний гемрой и героически потом преодолевает проблемы, вызванные этим

pihter ★★★★★
()
Ответ на: комментарий от pihter

в реальном мире все сложнее. зависимостей много, по каталогам ты их не разложишь, в куче пакетах cmake, pgk-config, libtool хотят либы из окружения. контейнеры спасают тем, что и разрабы, и сборочные стенды могут использовать один и тот же контейнер, со всеми зависимостями. openwrt еще изи вариант, у него от окружения зависят только хост тулы, остальное кросскомпилится.

vvviperrr ★★★★★
()
Ответ на: комментарий от pihter

Я довольно давно открыл для себя концепцию каталогов

вот docker как-раз и логическое продолжение твоей «концепции» (+ сhroot) - только в виде образа со слоями

признайся, что ты так и не сдюжил технологию 10-ти летней давности

Вместо исправления очевидной проблемы

вот фиг знает насколько правильно менять скрипты automake’а - легко огрести можно проблем, собирая софт компиллятором, сборку на котором не тестировали сами разработчики

gcc это же в конечном счёте бинарь, да?

gcc да, но тебе еще make, linter и всякие dev-tools обычно нужны конкретных версий и там сразу твоя «концепция» превращается в лютый квест

adn ★★★★
()
Ответ на: комментарий от vvviperrr

в реальном мире все сложнее

да не то что б уж. Я по работе только и занимаюсь кросскомпиляцией: этих ваших башей, мейков и прочих переменных окружения вполне хватает.

я понимаю зачем нужен докер, не такой уж я и глупый, я не понимаю зачем его пихать туда, где он не нужен вообще везде (а, согласись, есть такая проблема)

ты упомянул pkg-config – чем тебе не решение? В сочетании с докером только лишний геморой создает

в куче пакетах cmake, pgk-config, libtool хотят либы из окружения

ну вот вам и ответ. Вы имеете какую-то кучу пакетов, плохо приспособленных к компиляции разными компиляторами, с разными библиотеками и вот такое вот все. Ну, допустим, есть такая проблема. И в качестве решения, вы предлагаете не доработать мейки этих пакетов, так чтоб они легко все это переносили, а создать отдельную среду под каждый пакет.

Самый древний-раздревний мейк позволяет написать мейкфайл так, что там и любую тулзу и любую библиотеку заменить на аналог ничего не стоит. Чего уж говорить о последователях мейка. Собсно, мейкфайлы все так и пишут (генерируют)

Вместо того чтоб оформить программу так, чтоб она везде собиралась, оформляют для нее очередное уникальное окружение. Я наблюдаю какую-нибудь простенькую питоно-программу, которая, по сути, раскладывает файлы, она требует значит каких-то определенных версий каких-то определенных своих питоновских либ, там, значить, есть система пакетов этого питона, потом есть система переключения между этими состояниями разного дерева библиотек с разными версиями. Еще есть разные версии питонов. Еще все это под пакетным менеджером системы. И вы еще все это в докер пихаете, ну а чо, «удобно же, свое окружение у каждой программмы». Сколько слоев вот этого вот «удобно»? И чем дальше, тем больше «удобства» вы разводите. А ведь скрипт по раскладыванию файлов можно было просто так написать чтоб он везде работал: cp и mkdir везде есть.

Извини за многословие :)

pihter ★★★★★
()
Ответ на: комментарий от timyr

У компьютера, на котором пытаюсь собрать опен_врт, буду вечером…

ok

Прежде, чем мы начнем, ответьте на следующие вопросы:

  1. Почему openwrt v18.06.2, а не 18.06, например? в18.06.2 коммиттили больше 4 лет назад, а в 18.06 чуть больше года назад.

  2. Почему именно openwrt 18?

  3. Сможете перезагрузить хост? ( Ubuntu 22.04 LTS)

kindof
()
Последнее исправление: kindof (всего исправлений: 1)
Ответ на: комментарий от kindof

Выполнил эти команды: sudo apt install build-essential ccache ecj fastjar file g++ gawk gettext git java-propose-classpath libelf-dev libncurses5-dev libncursesw5-dev libssl-dev python2-minimal unzip wget python3-setuptools python3-dev rsync subversion swig time xsltproc zlib1g-dev nano

Что дальше делать?

timyr
() автор топика
Последнее исправление: timyr (всего исправлений: 3)
Ответ на: комментарий от adn

вот docker как-раз и логическое продолжение твоей «концепции» (+ сhroot) - только в виде образа со слоями

спасибо, буду знать :)

признайся, что ты так и не сдюжил технологию 10-ти летней давности

признаюсь: я попробовал, сделал что хотел (контейнер для сборки рабочего проекта, там все хитро), а потом обнаружил, что если это же переписать на баше, то получается проще и все так же работает. Скрипт просто на старте проверяет если ли условные git и curl в системе и если нет – ругается. Да, нет автоматизации, если что, новый разработчик ставит себе гит и курл через выполенение апт инсталл строчки, предложенной скриптом, ужасно, ужасно неудобно делать такое целый один раз, с докером – никакого сравнения!

выпад про то, что я не освоил десятилетней давности докер, могу парировать: признайся, что ты не освоил технологию столетней давности – мейкфайл

вот фиг знает насколько правильно менять скрипты automake’а - легко огрести можно проблем, собирая софт компиллятором, сборку на котором не тестировали сами разработчики

отгребешь проблем, пофиксишь, отправишь заплатку разрабам. Это – правильный путь

твоя «концепция» превращается в лютый квест

в шапке мейкфайла пишешь СС ?= gcc и ld ?= gcc и все такое прочее, а дальше по ходу мейкфайла используешь $(CC) вместо gcc.

И ВСЕ!

Этот самый ?= придумали, уверен, еще до твоего рождения и уже тогда он вполне решал описанную тобой проблему. Вся вот эта вот необходимость в докерах для сборки она от неумения написать мейкфайл, а проблема с разными версиями утилит тулчейна натурально высосана из пальца и выглядит как оправдание.

Еще раз, уверен, что есть места где контейнеры к месту. Но сборка сишных программ отлично обходится без при минимально правильной организации, а если не обходится – это именно проблемы организации. Я всего лишь выступаю за непложение лишних сущностей

pihter ★★★★★
()