Perl을 구축하는 것은 내부 농담입니까, 아니면 너무 많은 "전화"를 요구해야 합니까?

Perl을 구축하는 것은 내부 농담입니까, 아니면 너무 많은 "전화"를 요구해야 합니까?

그래서 저는 현재 ARMv7 프로세서의 소스와 Snapdragon S4의 Krait에서 Perl 버전 5.18.2를 구축하고 있는데 이 아키텍처에 대해 얼마나 많은 지원이 있는지 잘 모르겠습니다. 그런데 저는 LFS 시스템을 구축하려고 합니다. 문제는 제가 이틀 동안 Perl을 사용하지 못했다는 것입니다. 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이것이 제 유일한 직업이기 때문에 종종 정오 이후에 다시 시작하도록 이렇게 합니다. 다른 사람들에게는 다를 수 있습니다. jobs자세한 내용을 알아보고 주문하십시오.fgbg

나는 이것이 무한 루프일 수 있다는 것을 알고 있지만 그것을 사용하여 그것을 죽일 수도 있었습니다 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를 배울 것입니다. 빌드를 처음부터 구성할 때 시스템에 있는 모든 메이크파일을 다시 빌드해야 하는 것처럼 보입니다. 따라서 이는 정상적인 동작, 즉 반복 동작 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% 성공, 나쁘지 않습니다.

이것은 "Linux From Scratch" 5장에서 작성된 임시 도구용이고 테스트 스위트가 필요하지 않으며 해당 디렉토리에 일부 라이브러리를 복사하기만 하면 된다고 하므로 /tools성공적으로 호출하겠습니다.

관련 정보