LINUX.ORG.RU

gcc 8.2

 


0

1

объясните если несложно как сделать так чтобы ядро Gentoo при сборке было собранно именно этим компилятором? думаю, что это будет неправльно , если соберу ядро Gentoo,если соберу,а после начну пытаться установить gcc 8. то есть ядро будет собрано gcc 6 например, а потом оно как бы должно пересобраться уже gcc 8 чтобы этот компилятор мог работать. я так понимаю. хотя чушь конечно же несу. но все же,как сделать это? как заменить компилятор на более новый до компиляции ядра?


это не просто для того что у одного компилятора цифорки другие и он новее и лучше. хотя, в этом тоже правда. gcc 8 позволяет делать то что для gcc 6 считается ошибкой.

linuxpc
() автор топика

как заменить компилятор на более новый до компиляции ядра?

Собери gcc-8.2 до сборки ядра и собирай потом ядро чем хочешь.

а потом оно как бы должно пересобраться уже gcc 8 чтобы этот компилятор мог работать. я так понимаю. хотя чушь конечно же несу
чушь конечно же несу

да

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

объясните

вот я имею source gcc 8/ livecd Gentoo и stage

что и на чем должен сделать? сначало установить Gentoo, скопилить gcc 8, установить его, а потом уже снова собрать ядро что ли но уже с новым gcc?

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

Всё по хендбуку.
Бутишься с livecd, размечаешь диск на какой будешь ставить, разворачиваешь туда stage, заполняешь в каталоге etc в развёрнутом стейже файлы (по документации с сайта), монтируешь нужные файловые системы, чрутишься в развёрнутый стейж.
Заносишь в /etc/portage/package.keywords sys-devel/gcc **
Потом
emerge --sync
emerge binutils gcc
Когда надо будет компилировать ядро просто переключаешься на нужный gcc.

imul ★★★★★
()

Да нет, нормально. Вообще всё равно. С 7 на 8 так можно и не пересобирать весь мир (наконец). Хотя у wxwidgets опять проблемы вроде бы, но кому они надо. Потом переключишь компилятор всё само обновится постепенно.

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

gcc 8 позволяет делать то что для gcc 6 считается ошибкой.

А не наоборот разве? В последних версиях GCC более строгий лексический анализатор, так что код, написанный для GCC 6, может не скомпилироваться GCC 8. Обратное тоже верно, если используются новые синтаксические конструкции, поддерживаемые GCC 8 и не поддерживаемые GCC 6.

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

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

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

извините , но еще пара вопросов: как переключится и вот это я не понял gcc **. source кладем? мы вообще source gcc будем ложить?

linuxpc
() автор топика

с чего это для новой версии компилятора нужно ядро собранное этой версией компилятора?

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

Hardened тулчейну нужно ядро собранное hardened тулчейном чтобы hardened тулчейн работал например. Может быть это его случай.

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

как переключится

eselect

# eselect gcc
Usage: eselect gcc <action> <options>

Standard actions:
  help                      Display help text
  usage                     Display usage information
  version                   Display version information

Extra actions:
  list                      List all installed version of gcc
  set <target>              Activate one of the installed gcc
    target                    Target name or number (from 'list' action)
  show                      Print the currently active gcc version

# eselect gcc list
 [1] x86_64-pc-linux-gnu-7.3.0 *
 [2] x86_64-pc-linux-gnu-8.2.0

# eselect gcc set 2
# eselect gcc list
 [1] x86_64-pc-linux-gnu-7.3.0
 [2] x86_64-pc-linux-gnu-8.2.0 *


и вот это я не понял gcc **

В файл /etc/portage/package.keywords надо добавить строку:
sys-devel/gcc **
Ну и погуглить про файл package.keywords

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

GCC поставляется отдельно от системы. Переключиться на использование другой версии на FreeBSD, к примеру, можно, задав переменные окружения к компиляторам С, С++ в /etc/make.conf и подменив библиотеки времени выполнения в /etc/libmap.conf. После чего можно перезагрузиться и попробовать перекомпилировать ядро и систему с приложениями.

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

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

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

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

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

ну вот такими предрассудками набита голова.

мне говорили гугли и я гуглил.. вот результат.

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

Ядро работает совершенно отдельно от юзерспейса (с приходом sustemd это не совсем так, теперь ядро полагается на часть функций юзерспейса при загрузке, но сути это не меняет) и уж совершенно точно компилятор определённой версии ему не нужен, достаточно любого совместимого. Поменьше читай глупости в интернете.

Ты можешь спокойно удалять старую версию гцц ничего не пересобирая, если после переключения на новую софт всё ещё собирается и линкуется (можно пересобрать @system чтобы проверить, новые гцц часто ломают критический для системы софт) и загрузиться больше не выйдет. Поэтому не стоит бежать на новый распоследний компилятор как только он появится.

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

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

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

ядру нужен компилятор, тот который его собирал...

для сборки модулей ядра
ну или просто опять пересобрать то же самое ядро уже новым компилятором

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

Можно и его, eselect просто обёртка для единого управления

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

Это как ACCEPT_KEYWORDS в make.conf. Например если x86, то emerge будет предлагать те ебилды, у которых в KEYWORDS есть x86. Если ~x86, то соответственно ~x86. При указании ** будут предлагаться для установки пакеты без указания KEYWORDS, или с любым там содержанием. Для gcc-8.2.0-r6 в общем-то достаточно ~

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

для gcc 8.2 что надо написать? я гуглил, только об этом не пишут. ну или киньте плиз ссылку, где об этом написанно, если вдруг писать Вам лень)

linuxpc
() автор топика
12 марта 2019 г.

интересно что это значит unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE

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

Это значит удалить переменные окружения LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE для текущей сессии шелла. Мог бы сам догадаться.

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

если бы мог, то не нажал бы эти буковки))))) система больше не стартанула))))

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

unset — встроенная команда bash.
Поэтому кратенько: help unset.
Более подробно: man bash, раздел «SHELL BUILTIN COMMANDS», подраздел «unset».

система больше не стартанула

Дело не в этих буковках, unset распространяются только на текущий (и дочерние) сеанс оболочки (shell).

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

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

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

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

linuxpc
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.