LFS에 crt1.o 및 crti.o를 제공하는 방법은 무엇입니까?

LFS에 crt1.o 및 crti.o를 제공하는 방법은 무엇입니까?

다음 명령을 사용하여 Linux 배포판을 만들려고 합니다.처음부터 리눅스(LFS) 웹 사이트. 단계까지 모든 것이 잘 진행되었습니다.5.7.글리브-2.19, 하지만 시도할 때:

$LFS_TGT-gcc dummy.c

나는 얻다:

/tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/../../../../i686-lfs-linux-gnu/bin/ld: cannot find crt1.o: No such file or directory
/tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/../../../../i686-lfs-linux-gnu/bin/ld: cannot find crti.o: No such file or directory

그래서 잠시 구글링을 하다가 데비안이 일부 디렉토리를 변경했다는 것을 깨달았습니다. 파일을 검색하여 다음 위치에서 찾았습니다.

/usr/libx32/

나는 이러한 검색을 통해 32비트 구조에서 64비트를 컴파일하려고 할 때 이런 일이 발생한다는 것을 깨달았으며 다음 주제에 대한 더미 링크를 만들어야 합니다.

/tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/

하지만 이렇게 하면 다음과 같은 결과를 얻습니다.

/tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/crt1.o: file not recognized: File format not recognized

이 시점에서 나는 다음에 무엇을 해야 할지 정말로 모르겠습니다. 어떻게 해결할 수 있나요?

답변1

올바른 가상 링크는 다음과 같습니다.

ln -s /tools/lib/crt*.o /tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/

답변2

환경 변수가 $LFS잘못되었을 수 있습니다.

또한 LFS 구축을 시도했지만 비슷한 오류가 발생했습니다.

/mnt/tools/bin/../lib/gcc/x86_64-lfs-linux-gnu/9.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: cannot find crt1.o: No such file or directory 
/mnt/tools/bin/../lib/gcc/x86_64-lfs-linux-gnu/9.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: cannot find crti.o: No such file or directory

누락된 파일을 직접 연결하기 위해 다른 의견에서 제안한 솔루션을 시도했습니다. 실제로는 간단한 컴파일 테스트를 통과하지만 다음 단계에서는 libstdc++를 빌드해야 합니다. 구성은 다음 오류로 끝납니다.

checking for stdalign.h... no
checking for the value of EOF... configure: error: computing EOF failed

결국 실수로 LFS 변수를 잘못된 경로로 변경했다는 사실을 발견했습니다(가이드와 다른 설치 경로를 사용하고 있었고 .bashrc그에 따라 LFS 내보내기를 변경하는 것을 잊어버렸습니다). 이것이 진짜 이유입니다.

답변3

다음 명령은 Fedora 28에서도 동일한 문제를 해결한다는 점에 유의해야 합니다.

ln -s /tools/lib/crt*.o /tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/

관련 정보