
Итак, я сейчас собираю Perl версии 5.18.2 из исходников на процессоре ARMv7, Krait на Snapdragon S4, и я не слишком уверен, насколько развита поддержка такой архитектуры. Кстати, я пытаюсь собрать систему LFS. Дело в том, что на два дня я застрял на Perl. Я пробовал разных пользователей, как root, с CFLAGS, без CFLAGS, исходники Debian версий 5.16 и 5.18, и я всегда застревал на определенном этапе сборки.
Поэтому в последний раз я решил обратить внимание на сообщение, в котором говорится:
==> Your Makefile has been rebuilt. <==
==> Please rerun the make command. <==
или что-то вроде того.
Поэтому я сделал небольшой цикл for...
RET=$?; for i in `seq 10`; do if [ ! $RET -eq 0 ]; then echo " \
RETURN ${i} == ${RET} \
" && make; RET=$?; fi; done
... Я начал с 3-й части, и, конечно же, после каждой из нихкажетсядля продвижения по сборке. То есть, он дает сбой на другом шаге, и когда я проверяю журнал, я вижу, что последний шаг, на котором он дал сбой, был успешным, и я вижу то же самое сообщение:
==> Your Makefile has been rebuilt. <==
==> Please rerun the make command. <==
Я бегло просмотрел инструкции по сборке на CPAN и не увидел никаких ссылок или чего-либо, указывающего на то, что мне следует через это пройти, поэтому возникает вопрос.
Это какая-то внутренняя шутка или я делаю что-то ужасно неправильно?
решение1
Хорошо, я думаю, что сообщение говорило мне, что нужно поступить правильно, хотя кажется невозможным сидеть у командной строки и набирать make более 50 раз (возможно, даже более 100 раз), поэтому я написал этот небольшой цикл while перед тем, как пойти спать:
RET=$?; while [ ! $RET -eq 0 ]; do echo " \
RETURN == ${RET} \
"; make; RET=$?; done
И пусть он работает. Я сделал Ctrl+z
это, чтобы остановить работу, пока я спал, а затем я fg 1
снова запускал его этим днем 1, потому что это была единственная работа, которая у меня была, у кого-то это может быть по-другому, изучите команды jobs
, fg
и bg
для получения дополнительной информации.
Я понимаю, что это мог быть бесконечный цикл, но я всегда мог его завершить с помощью Ctrl-c
. Кажется, он всегда возвращал 2, так что, возможно, тестирование while [ $RET -eq 2 ]; do
было бы более идеальным вариантом.
К моему удивлению, он просто закончился возвратом 0 с таким сообщением:
make[1]: Leaving directory '/home/lfs/sources/perl/perl-5.18.2/x2p'
Everything is up to date. Type 'make test' to run test suite.
Итак, теперь я продолжу с Linux From Scratch. Кажется, что, возможно, при настройке сборки с нуля, любые файлы makefile, присутствующие в системе, должны быть перестроены, поэтому я собираюсь сказать, что это было нормальное поведение, повторяющееся make
, и что не все собирается как «стандартные» программы GNU.
Надеюсь, это поможет кому-нибудь в будущем.
Обновлять:
Вот результат тестового набора:
Failed 10 tests out of 2247, 99.55% okay.
../cpan/CPANPLUS/t/03_CPANPLUS-Internals-Source.t
../cpan/Socket/t/socketpair.t
../cpan/Sys-Syslog/t/syslog.t
../cpan/Time-HiRes/t/alarm.t
../cpan/Time-HiRes/t/clock.t
../cpan/Time-HiRes/t/usleep.t
../dist/ExtUtils-Command/t/cp.t
op/alarm.t
op/sigdispatch.t
op/sleep.t
99,55% успеха, неплохо.
Поскольку это касается временных инструментов, созданных в главе 5 «Linux From Scratch», и они говорят, что тестовый набор не требуется, и что мне нужно только скопировать некоторые библиотеки в каталог /tools
, я назову это успехом.