Кто дурак?
May. 30th, 2009 12:05 amПытаюсь собрать кросс-компилятор.
binutils кое-как собрал (оказывается, местные make и lex работают не совсем так, как надо - пришлось ставить GNUтые gmake и flex, с ними собралось и заработало)
Пришла очередь gcc-bootstrap. Опять куча всяких заподлянок (вплоть до исчерпания памяти - щас работаю в виртуальной машине и эту проблему решил переконфигурированием). Споткнулся о следующее:
смотрю в texi2dvi, на тот код, который вызывает сбой:
Некий код, проверяющий действенность ключевого слова "local". Ошибка конкретно в строке "local foo=foo". Дефолтный шелл OSol - ksh. Поставил bash 4.0,прописал буквально его в вышеупомянутом скрипте - пофиг, всё равно та же ошибка. При этом, если из test_local этот самый local убрать (то есть
Как это исправить или обойти? Документация на gcc мне не упёрлась совсем
Upd1
Указание #!/bin/bash магически помогло, но не совсем. Теперь texi2pdf ругается на то, что texinfo.tex appears to be broken
Блин, а бывают такие программы, которые собираются из исходников сразу, с первой попытки, без ошибок, без бубна?
Upd2 Не очень изящно, зато сработало: не стал бодаться с глюками и несоответствиями, а просто удалил из головного Makefile указания на install-html и install-pdf. Теперь пошла сборка newlib.
Upd3 newlib собралась без запинок. Теперь собираю gcc-final. Должно получиться.
binutils кое-как собрал (оказывается, местные make и lex работают не совсем так, как надо - пришлось ставить GNUтые gmake и flex, с ними собралось и заработало)
Пришла очередь gcc-bootstrap. Опять куча всяких заподлянок (вплоть до исчерпания памяти - щас работаю в виртуальной машине и эту проблему решил переконфигурированием). Споткнулся о следующее:
gmake install делает, кроме всего прочего, документацию к gcc (это можно отключить?). В процессе вызывает texi2pdf, который вызывает texi2dvi. Я поставил последнуюю версию пакета TexLive, поправил PATH и теперь получаю вот такое:texi2pdf -I . -I /export/home/kinkajou/Download/build-gcc/gcc/../../arm-2008q3-39-arm-none-eabi/gcc-4.3/gcc/doc -I /export/home/kinkajou/Download/build-gcc/gcc/../../arm-2008q3-39-arm-none-eabi/gcc-4.3/gcc/doc/include -o doc/gcc.pdf ../../arm-2008q3-39-arm-none-eabi/gcc-4.3/gcc/doc/gcc.texi
/usr/bin/texi2dvi[130]: local: not found [No such file or directory]
/usr/bin/texi2dvi[432]: local: not found [No such file or directory]
gmake[2]: *** [doc/gcc.pdf] Error 127
смотрю в texi2dvi, на тот код, который вызывает сбой:
(
foo=bar
test_local() {
local foo=foo
}
test_local()
test $foo=bar
) || local () {
case $1 in
*=*) eval "$1";;
esac
}Некий код, проверяющий действенность ключевого слова "local". Ошибка конкретно в строке "local foo=foo". Дефолтный шелл OSol - ksh. Поставил bash 4.0,
test $foo=bar увидит, что $foo содержит уже не "bar", а "foo"), чтобы получилась функция local(), то ошибка уже другая - шелл ругается на то, что делает eval. Как это исправить или обойти? Документация на gcc мне не упёрлась совсем
Upd1
Указание #!/bin/bash магически помогло, но не совсем. Теперь texi2pdf ругается на то, что texinfo.tex appears to be broken
Блин, а бывают такие программы, которые собираются из исходников сразу, с первой попытки, без ошибок, без бубна?
Upd2 Не очень изящно, зато сработало: не стал бодаться с глюками и несоответствиями, а просто удалил из головного Makefile указания на install-html и install-pdf. Теперь пошла сборка newlib.
Upd3 newlib собралась без запинок. Теперь собираю gcc-final. Должно получиться.
no subject
Date: 2009-05-29 09:12 pm (UTC)user@localhost:~> local
bash: local: может быть использована только в функции
Можно в Makefile поковырятся, наверняка место, откуда выполняется сборка документации, не особо далеко запрятано.
no subject
Date: 2009-05-29 09:29 pm (UTC)А как без texinfo gcc собрать - хз, тумблера в ./configure навскидку не нашёл, думать надо...
no subject
Date: 2009-05-29 09:34 pm (UTC)no subject
Date: 2009-05-29 09:36 pm (UTC)no subject
Date: 2009-05-30 12:10 pm (UTC)Кстати, прописывание шелла в шебанге скрипта не всегда роялит - если в Makefile, например, файл скрипта передаётся параметром определённому бинарнику - то ой.
Можно указывать шелл для сборки так: CONFIG_SHELL=/bin/bash ./configure --bla-bla
По поводу Upd2 - имхо вполне нормально.