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 ★
() автор топика
Ответ на: комментарий от imul

А не gcc-config?

Хотя пофиг, одно и то же делают.

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от 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 ★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.