GCC 6.3 или GCC 7.x в качестве системного компилятора

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение iZEN » 2017-04-23 0:40:11

Приветствую.

На досуге пробую собрать FreeBSD 11-STABLE с помощью установленного из портов GCC 6.3 и 7-devel.
Конфигурация сорцов (/etc/src.conf):

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

WITHOUT_AMD=true
WITHOUT_ASSERT_DEBUG=true
WITHOUT_ATM=true
WITHOUT_BHYVE=true
WITHOUT_BLUETOOTH=true
WITH_BSD_GREP=true
WITHOUT_BSNMP=true
WITHOUT_CLANG=true
WITHOUT_DEBUG=true
WITHOUT_DMAGENT=true
WITHOUT_EXAMPLES=true
WITHOUT_FLOPPY=true
WITHOUT_FORMAT_EXTENSIONS=true
WITHOUT_GAMES=true
WITHOUT_GDB=true
WITHOUT_HYPERV=true
WITHOUT_HTML=true
WITHOUT_IPFILTER=true
WITHOUT_IPFW=true
WITHOUT_IPX=true
WITHOUT_IPX_SUPPORT=true
WITHOUT_KDUMP=true
WITHOUT_LDNS=true
WITHOUT_LIB32=true
WITHOUT_LLDB=true
WITHOUT_LOCATE=true
WITHOUT_LPR=true
WITHOUT_MAIL=true
WITHOUT_MAILWRAPPER=true
WITHOUT_NDIS=true
WITHOUT_NETGRAPH=true
WITHOUT_NETGRAPH_SUPPORT=true
WITHOUT_PPP=true
WITHOUT_PROFILE=true
WITHOUT_SENDMAIL=true
WITH_SVN=true
WITHOUT_TALK=true
WITHOUT_TELNET=true
WITHOUT_TESTS=true
WITHOUT_UNBOUND=true
WITHOUT_WIRELESS=true


Конфигурация сборочного инструмента (/etc/make.conf):

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

KERNCONF=COMP
MAKE_JOBS_NUMBER=5
WITHOUT_DEBUG=true
# This setting to build world without -Werror:
NO_WERROR=
# This setting to build kernel without -Werror:
WERROR=
CC=/usr/local/bin/gcc7
CXX=/usr/local/bin/g++7
CPP=/usr/local/bin/cpp7
DEFAULT_VERSIONS=perl5=5.24 ruby=2.4 tcltk=8.6


Подстановка библиотек (/etc/libmap.conf):

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

# $FreeBSD: stable/11/etc/libmap.conf 253853 2013-08-01 05:50:42Z jlh $
includedir /usr/local/etc/libmap.d
libgcc_s.so.1   gcc7/libgcc_s.so.1
libgomp.so.1    gcc7/libgomp.so.1
libobjc.so.3    gcc7/libobjc.so.4
libssp.so.0     gcc7/libssp.so.0
libstdc++.so.6  gcc7/libstdc++.so.6


В такой конфигурации GCC сами себя пересобирают и переустанавливаются.
Но make buildworld пишет ошибки, которые при использовании системного LLVM/Clang не выявляются. Одни я исправил. К другим не пойму, как подступиться.
Вот эти:

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

In file included from /usr/src/lib/libc/iconv/__iconv.c:31:0:
/usr/src/lib/libc/iconv/iconv-internal.h:35:48: error: unknown type name '__iconv_bool'; did you mean 'iconv_t'?
 int __bsd___iconv_get_list(char ***, size_t *, __iconv_bool);
                                                ^~~~~~~~~~~~
                                                iconv_t
/usr/src/lib/libc/iconv/__iconv.c:34:1: warning: no previous prototype for '__iconv' [-Wmissing-prototypes]
 __iconv(iconv_t a, char **b, size_t *c, char **d,
 ^~~~~~~
*** Error code 1

Stop.
make[1]: stopped in /usr/src/lib/libc_nonshared
*** Error code 1

и

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

/usr/local/bin/gcc7 -O2 -pipe   -DSHELL -I. -I/usr/src/bin/sh -DNDEBUG -g -MD  -MF.depend.expand.o -MTexpand.o -std=gnu99 -fstack-protector-strong -Wsystem-headers -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -Wno-error=unused-function -Wno-error=enum-compare -Wno-error=logical-not-parentheses -Wno-error=bool-compare -Wno-error=uninitialized -Wno-error=array-bounds -Wno-error=clobbered -Wno-error=cast-align -Wno-error=extra -Wno-error=attributes -Wno-error=inline -Wno-error=unused-but-set-variable -Wno-error=unused-value -Wno-error=strict-aliasing -Wno-error=address     -c /usr/src/bin/sh/expand.c -o expand.o
/usr/local/bin/gcc7 -O2 -pipe   -DSHELL -I. -I/usr/src/bin/sh -DNDEBUG -g -MD  -MF.depend.histedit.o -MThistedit.o -std=gnu99 -fstack-protector-strong -Wsystem-headers -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -Wno-error=unused-function -Wno-error=enum-compare -Wno-error=logical-not-parentheses -Wno-error=bool-compare -Wno-error=uninitialized -Wno-error=array-bounds -Wno-error=clobbered -Wno-error=cast-align -Wno-error=extra -Wno-error=attributes -Wno-error=inline -Wno-error=unused-but-set-variable -Wno-error=unused-value -Wno-error=strict-aliasing -Wno-error=address     -c /usr/src/bin/sh/histedit.c -o histedit.o
/usr/src/bin/sh/histedit.c: In function 'histedit':
/usr/src/bin/sh/histedit.c:127:9: error: '_el_fn_sh_complete' undeclared (first use in this function); did you mean '_el_fn_complete'?
         _el_fn_sh_complete);
         ^~~~~~~~~~~~~~~~~~
         _el_fn_complete
/usr/src/bin/sh/histedit.c:127:9: note: each undeclared identifier is reported only once for each function it appears in
*** Error code 1


Кому удалась сборка GNU-компилятором?
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix


Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение iZEN » 2017-04-24 10:12:55

Интересно же, сможет ли система собираться альтернативным набором компиляторов C/C++.

Пока что добился того, что система собралась с GCC 4.2.1, но ядро, собранное GCC7 останавливает загрузку на определении ATA-устройств - пришлось использовать ядро, собранное Clang'ом. После прогрузки гибрида X'ы не стартовали, пересборка портов натыкается на отсутствующую libc+.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение Neus » 2017-04-24 12:29:48

:st: :cz2:
«Вы никогда не сумеете решить возникшую проблему,
если сохраните то же мышление и тот же подход,
который привёл вас к этой проблеме.»
© Альберт Эйнштейн

guest
проходил мимо

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение guest » 2017-04-24 13:30:29

iZEN писал(а):Интересно же, сможет ли система собираться альтернативным набором компиляторов C/C++.

Пока что добился того, что система собралась с GCC 4.2.1, но ядро, собранное GCC7 останавливает загрузку на определении ATA-устройств - пришлось использовать ядро, собранное Clang'ом. После прогрузки гибрида X'ы не стартовали, пересборка портов натыкается на отсутствующую libc+.


Никогда не сталкивались с теорией построения компилятора? (на спецухах ВМК, системотехники и еще ряде - должен
был быть такой курс, лет 30-40 назад был)

Можно открыть для себя много нового... И тогда быстро избавитесь от верхней каши...

ps. Даже в документации к развертыванию GCC руками, много полезного написано, в том числе и про linker.
pps. Играться в сборку ОС и Ядра - можно, нкто не запрещает, но не понимая что делают компилятор
и линковщик и КАК ОНИ это делают, заниматься сборкой можно долго и безрезультатно,особливо ЯДРА.

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение iZEN » 2017-04-24 18:32:08

Несколько лет назад пробовал переводить FreeBSD с GCC 4.2.1 на GCC 4.6. Вполне неплохо работало.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение hizel » 2017-05-08 11:16:13

передергиваешь на компиляцию - заведи себе генту

>сорцов

пфф
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение iZEN » 2017-05-08 13:38:38

Не надо меня учить, что мне делать. FreeBSD до некоторых пор собиралась компилятором GCC из портов, а с развитием LLVM/Clang в некоторых местах вдруг перестала. Это разве не говорит о том, что разработчики всё больше ориентируются на конкретный тип компилятора, на его побочные эффекты и перестают следить за чистотой и стандартностью кода?
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение hizel » 2017-05-08 13:51:08

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

guest
проходил мимо

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение guest » 2017-05-08 14:36:45

iZEN писал(а):Не надо меня учить, что мне делать. FreeBSD до некоторых пор собиралась компилятором GCC из портов, а с развитием LLVM/Clang в некоторых местах вдруг перестала. Это разве не говорит о том, что разработчики всё больше ориентируются на конкретный тип компилятора, на его побочные эффекты и перестают следить за чистотой и стандартностью кода?


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

неудивительно что целый ряд linux дистрибутивов уже несколько лет чистит код
используя clang/llvm, некоторые уже используют как альтернативный компилятор
с прицелом на будущий переход.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение hizel » 2017-05-08 15:48:37

>lang гораздо строже парсит исходники в отличие от gcc

пруфцы покажете?

> точнее и понятней указывает на возможные ошибки.

завезли начиная с gcc 5.x такое же как в clang

>неудивительно что целый ряд linux дистрибутивов уже несколько лет чистит код используя clang/llvm

это какие?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

guest
проходил мимо

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение guest » 2017-05-08 17:30:16

hizel писал(а):>lang гораздо строже парсит исходники в отличие от gcc

пруфцы покажете?


порты - хоть обсобирайтесь и обсмотритесь

> точнее и понятней указывает на возможные ошибки.

завезли начиная с gcc 5.x такое же как в clang


Андерсен?

>неудивительно что целый ряд linux дистрибутивов уже несколько лет чистит код используя clang/llvm

это какие?


gentoo, debian - достаточно?

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение hizel » 2017-05-08 18:52:57

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

guest
проходил мимо

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение guest » 2017-05-08 19:42:47

hizel писал(а):понятно, ананимус опять обосрался


продолжай в лошадки играть

ultimo
проходил мимо
Сообщения: 2
Зарегистрирован: 2017-05-13 7:46:55

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение ultimo » 2017-05-13 7:49:26

Зачем ядро на gcc собирать если на кленг все стабильно работает?
Только вот некоторые порты все еще приходится на gcc собирать.

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение iZEN » 2017-05-13 13:41:42

Вы правда не понимаете, зачем?
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

мимоходом
проходил мимо

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение мимоходом » 2017-05-13 18:05:15

iZEN писал(а):Вы правда не понимаете, зачем?


интересно узнать?

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение iZEN » 2017-05-13 18:57:28

У меня есть потребность проверить, сможет ли система быть отвязана от конкретного компилятора и будет ли при этом она работоспособна. Если у вас какие-то проблемы личного характера с восприятием этой потребности или какие-то фанатично-идеологические "скрепы души", прошу, не засоряйте тему обозначением своего мнения — меня оно не интересует. Меня интересует чисто техническая возможность откомпилировать систему последними версиями компиляторов GCC.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

мимоходом
проходил мимо

GCC 6.3 или GCC 7.x в качестве системного компилятора

Непрочитанное сообщение мимоходом » 2017-05-13 21:41:22

iZEN писал(а): Меня интересует чисто техническая возможность откомпилировать систему последними версиями компиляторов GCC.


понято.


Вернуться в «FreeBSD»

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

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