|
ошибка make (linux) при сборке gcc | ☑ | ||
---|---|---|---|---|
0
vde69
18.09.22
✎
20:25
|
решил обновить компилятор GCC, пробовал разные версии, пока остановился на 8 версии, по идее она меня должна устроить.
Установку выполняю так: cd /i-data/d2761c3e/compilephp tar -xzvf /i-data/d2761c3e/compilephp/gcc-8.1.0.tar.gz cd /i-data/d2761c3e/compilephp/gcc-8.1.0 /i-data/d2761c3e/.PKG/multiple-php/make/bin/make clean ./configure --prefix=/i-data/d2761c3e/.PKG/multiple-php/gcc --with-local-prefix=/i-data/d2761c3e/.PKG/multiple-php/gcc --with-mpfr=/i-data/d2761c3e/.PKG/multiple-php/mpfr --with-mpfr-include=/i-data/d2761c3e/.PKG/multiple-php/mpfr/include --with-mpc=/i-data/d2761c3e/.PKG/multiple-php/mpc --with-mpc-include=/i-data/d2761c3e/.PKG/multiple-php/mpc/include --with-gmp=/i-data/d2761c3e/.PKG/multiple-php/gmp --with-gmp-include=/i-data/d2761c3e/.PKG/multiple-php/gmp/include --enable-languages=c,c++ --includedir=/i-data/d2761c3e/compilephp/gcc-8.1.0/include /i-data/d2761c3e/.PKG/multiple-php/make/bin/make установлены из исходников библиотеки mpfr-4.1.0 mpc-1.2.1 gmp-6.2.1 но вот тут происходит ошибка, если упрощенно - то ошибка вываливается на выполнении ------------------------------------------------------------------------------- g++ -std=gnu++98 -g -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -fno-PIE -static-libstdc++ -static-libgcc -no-pie -o build/genmddeps build/genmddeps.o build/read-md.o build/errors.o ../../build-armv7l-unknown-linux-uclibceabi/libiberty/libiberty.a g++: unrecognized option '-no-pie' build/read-md.o: In function `~md_reader': /i-data/d2761c3e/compilephp/gcc-8.1.0/host-armv7l-unknown-linux-uclibceabi/gcc/../.././gcc/read-md.c:1039: undefined reference to `_obstack_free' /i-data/d2761c3e/compilephp/gcc-8.1.0/host-armv7l-unknown-linux-uclibceabi/gcc/../.././gcc/read-md.c:1042: undefined reference to `_obstack_free' /i-data/d2761c3e/compilephp/gcc-8.1.0/host-armv7l-unknown-linux-uclibceabi/gcc/../.././gcc/read-md.c:1045: undefined reference to `_obstack_free' collect2: ld returned 1 exit status make[3]: *** [Makefile:2869: build/genmddeps] Error 1 make[3]: Leaving directory '/i-data/d2761c3e/compilephp/gcc-8.1.0/host-armv7l-unknown-linux-uclibceabi/gcc' make[2]: *** [Makefile:4616: all-stage1-gcc] Error 2 make[2]: Leaving directory '/i-data/d2761c3e/compilephp/gcc-8.1.0' make[1]: *** [Makefile:22960: stage1-bubble] Error 2 make[1]: Leaving directory '/i-data/d2761c3e/compilephp/gcc-8.1.0' make: *** [Makefile:944: all] Error 2 ----------------------------------------------------------------------------------------- все облазил, не понимаю чего и где смотреть, все советы в инете сводятся к переустановке компилятора, но именно это и вызывает ошибку..... |
|||
1
vde69
18.09.22
✎
20:50
|
добавлю:
_obstack_free - объявляется в файле obstack.h вот так extern void _obstack_free (struct obstack *, void *); // кстати где он реально определен я не нашел, как я понимаю extern - это виртуальное определение его я даже скопировал в папку где лежит read-md.c в файле read-md.c есть #include "read-md.h" а в файле read-md.h есть #include "obstack.h" |
|||
2
Йохохо
18.09.22
✎
21:09
|
https://github.com/Freetz/freetz/blob/master/toolchain/make/target/binutils/2.26/400-uClibc_obstack_interface.freetz.patch там в ковычках про uclibc, но по опыту пытаться чинить это бестолку
|
|||
3
Biker
18.09.22
✎
21:13
|
Зачем ты под арм собираешь?
|
|||
4
ansh15
18.09.22
✎
21:14
|
Что-то похожее https://blog.fearcat.in/a?ID=01000-f21e907a-2dcd-4e3a-8c99-91fb4206df69
Решение так себе, но автор пишет, что успешно. |
|||
5
vde69
18.09.22
✎
22:42
|
(4) как Вы это находите? я полдня искал ничего подобного не видел....
я думаю, что (4) должно сработать и собственно подход для меня вполне понятный и вроде все должно нормально работать :) |
|||
6
ansh15
18.09.22
✎
23:23
|
https://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_3.html
Собственно, и у разработчика gcc (в древности) такая же рекомендация в одном из случаев, только наоборот. Replace every occurrence of obstack_free in the file `tree.c' with _obstack_free. |
|||
7
vde69
18.09.22
✎
23:51
|
следующая непонятка - выдает, что нужен /usr/include его у меня нет (у меня он живет тут /i-data/d2761c3e/.PKG/ffp/ffproot/ffp/include ). И сделать симлинк в /usr/ я не могу (он только для чтения). Запуск с явным указанием каталога не помогает, та-же ошибка
INCLUDE_PATH="/i-data/d2761c3e/.PKG/ffp/ffproot/ffp/include" /i-data/d2761c3e/.PKG/multiple-php/make/bin/make ему не хватает каких-то конкретных файлов, или просто не работает передача через INCLUDE_PATH ? собственно ошибка здесь: ----------------------------------------------------------------------------- /ffp/bin/sh ../.././gcc/../move-if-change tmp-fixinc_list fixinc_list echo timestamp > s-fixinc_list rm -rf include-fixed; mkdir include-fixed chmod a+rx include-fixed if [ -d ../prev-gcc ]; then \ cd ../prev-gcc && \ /i-data/d2761c3e/.PKG/multiple-php/make/bin/make real-install-headers-tar DESTDIR=`pwd`/../gcc/ \ libsubdir=. ; \ else \ set -e; for ml in `cat fixinc_list`; do \ sysroot_headers_suffix=`echo ${ml} | sed -e 's/;.*$//'`; \ multi_dir=`echo ${ml} | sed -e 's/^[^;]*;//'`; \ fix_dir=include-fixed${multi_dir}; \ if ! false && test ! -d `echo /usr/include | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`; then \ echo The directory that should contain system headers does not exist: >&2 ; \ echo " `echo /usr/include | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`" >&2 ; \ tooldir_sysinc=`echo "/i-data/d2761c3e/.PKG/multiple-php/gcc/lib/gcc/armv7l-unknown-linux-uclibceabi/8.1.0/../../../../armv7l-unknown-linux-uclibceabi/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`; \ if test "x`echo /usr/include | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`" = "x${tooldir_sysinc}"; \ then sleep 1; else exit 1; fi; \ fi; \ /ffp/bin/sh ../.././gcc/../mkinstalldirs ${fix_dir}; \ chmod a+rx ${fix_dir} || true; \ (TARGET_MACHINE='armv7l-unknown-linux-uclibceabi'; srcdir=`cd ../.././gcc; ${PWDCMD-pwd}`; \ SHELL='/ffp/bin/sh'; MACRO_LIST=`${PWDCMD-pwd}`/macro_list ; \ gcc_dir=`${PWDCMD-pwd}` ; \ export TARGET_MACHINE srcdir SHELL MACRO_LIST && \ cd ../../build-armv7l-unknown-linux-uclibceabi/fixincludes && \ /ffp/bin/sh ./fixinc.sh "${gcc_dir}/${fix_dir}" \ `echo /usr/include | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta` ); \ rm -f ${fix_dir}/syslimits.h; \ if [ -f ${fix_dir}/limits.h ]; then \ mv ${fix_dir}/limits.h ${fix_dir}/syslimits.h; \ else \ cp ../.././gcc/gsyslimits.h ${fix_dir}/syslimits.h; \ fi; \ chmod a+r ${fix_dir}/syslimits.h; \ done; \ fi The directory that should contain system headers does not exist: /usr/include make[3]: *** [Makefile:3091: stmp-fixinc] Error 1 make[3]: Leaving directory '/i-data/d2761c3e/compilephp/gcc-8.1.0/host-armv7l-unknown-linux-uclibceabi/gcc' make[2]: *** [Makefile:4616: all-stage1-gcc] Error 2 make[2]: Leaving directory '/i-data/d2761c3e/compilephp/gcc-8.1.0' make[1]: *** [Makefile:22960: stage1-bubble] Error 2 make[1]: Leaving directory '/i-data/d2761c3e/compilephp/gcc-8.1.0' make: *** [Makefile:944: all] Error 2 |
|||
8
Garykom
гуру
19.09.22
✎
04:06
|
(7) у тебя ошибка что ты пытаешься собрать gcc на целевом девайсе с урезанным фактически линуксом
хотя образы для подобных девайсов компилят на больших компах на x86/x64 через разные тулчайны путем кросскомпиляции под целевую платформу |
|||
9
Garykom
гуру
19.09.22
✎
04:07
|
(8)+ я тоже с этим столкнулся при попытке компилить Go на целевых
тупо например памяти не хватает и падает или каких то зависимостей если cgo юзаешь |
|||
10
rphosts
19.09.22
✎
04:41
|
(9) и как GO? В книгу знаний статью типа "Пусть в GO" напишешь?
|
|||
11
Garykom
гуру
19.09.22
✎
04:48
|
(10) Старое Go прекрасно
Но что делают/добавляют в новых версиях мне уже не нравится Например система пакетов разных версий с зависимостями это прямой путь к их аду как уже c JS на NodeJS произошло Т.е. в языке уже все замечательно а они вместо расширения прикладного "встроенного" функционала начинают разным синтаксическим сахаром обваливать и прочим хламом Который уже убил другие ЯП, сделав их переусложненными |
|||
12
vde69
19.09.22
✎
10:06
|
(8) а не подскажешь название продуктов для копирования среды с девайса на большой комп в виртуалку
(7) как я понял (почитав в инете) тут проблема в кривой генерации сценария для "make" (не везде учитываются флаги поиска "include"), то есть надо править сценарий (добавлять параметры). Вечером буду пробовать... |
|||
13
Garykom
гуру
19.09.22
✎
10:46
|
(12) >а не подскажешь название продуктов для копирования среды с девайса на большой комп в виртуалку
Есть замечательный продукт "dd" Но вероятно тебе надо https://habr.com/ru/post/271011/ |
|||
14
Garykom
гуру
19.09.22
✎
10:49
|
(13)+ https://www.synology.com/ru-ru/support/developer#tool
хз какой у тебя девайс уже не помню |
|||
15
Gary417
19.09.22
✎
11:12
|
(12) "The directory that should contain system headers does not exist:"
для сборки большинства софта в линуксе нужны header файлы ядра, на большом линуксе есть пакет чёто типа linux-headers проблема не в сценарии, проблема в неподготовленном окружении |
|||
16
vde69
19.09.22
✎
11:22
|
(15) хедеры у меня есть, у меня стоит FFP Stick только не на флешке а на диске, по этому я особо не боюсь поломать ядро.
|
|||
17
Кирпич
19.09.22
✎
11:27
|
(16) Сдурел чтоли, компилить gcc на каком то стике? Полгода ждать будешь, пока скомлилится?
|
|||
18
vde69
19.09.22
✎
11:32
|
(17) думаю 10...20 минут занимает
PHP 7.4 компилировался менее 10 минут, правда не со всеми библиотеками которые мне нужны. Собственно мне gcc новый нужен для компиляции последней библиотеки которая мне нужна в PHP |
|||
19
Кирпич
19.09.22
✎
11:34
|
(18) ну и компилировал бы на нормальном компе. зачем это тащить на какую то флешку
|
|||
20
Garykom
гуру
19.09.22
✎
12:50
|
||||
21
vde69
19.09.22
✎
13:13
|
оставлю для себя ссылку на пакет - https://buildroot.org/downloads/manual/manual.html
ну и strip - удаление из объектного файла таблицы имен и информации о номерах строк ld - редактор связей для об ектных файлов обычного формата |
|||
22
vde69
20.09.22
✎
10:32
|
кто подскажет по Makefile
cc1plus$(exeext): $(CXX_OBJS) cc1plus-checksum.o $(BACKEND) $(LIBDEPS) +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ $(CXX_OBJS) cc1plus-checksum.o $(BACKEND) $(LIBS) $(BACKENDLIBS) как я понимаю это все примерно так выглядит для файла cc1plus проверить условие $(CXX_OBJS) cc1plus-checksum.o $(BACKEND) $(LIBDEPS) и выполнить линковку вопрос про условие, чего значат эти параметры? учитывая, что там пробелы а не табы то это все одно условие. Интуитивно я подозреваю, что проверяется контрольная сумма, но вот чего и с чем - не понятно |
|||
23
Salimbek
20.09.22
✎
12:48
|
(22) Вот тут понятно описано: https://habr.com/ru/post/155201/
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |