내 랩톱에 Nachos를 설치하려고하는데 랩톱에 Ubuntu 11.04가 있습니다.
코드는 C로되어 있으므로 빌드하려면 크로스 컴파일러가 필요하다고 가정합니다. 여기가 내 문제입니다. 명령을 사용하여 MIPS 크로스 컴파일러의 소스 코드를 다운로드했습니다.
wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz
그리고 나는 그것을 사용하여 압축을 푼다.
tar zxvf mips-decstation.linux-xgcc.gz
괜찮습니다.하지만 make를 사용하여 nachos os의 소스 코드를 빌드하려고하면이 오류가 발생합니다.
/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. make: *** [bitmap.o] Error 1
나는 여기에 주어진 지침을 따르려고 노력하고 있습니다 -http : //mll.csie.ntu.edu.tw/course/os_f08/217.htm 그리고 make를 사용할 때를 제외하고는 모든 것이 잘 작동합니다.
답변
32 비트 libc dev 패키지가 없습니다 :
에 우분투 그것은으로 libc6-DEV-I386라고 – 할 sudo apt-get install libc6-dev-i386
. Ubuntu 12.04에 대한 추가 지침은 아래를 참조하십시오.
에 레드햇 배포판의 패키지 이름입니다 glibc-devel.i686
(데이비드 가드너의 의견에 감사합니다).
에 CentOS는 5.8 , 패키지 이름입니다 glibc-devel.i386
(JimKleck의 의견에 감사합니다).
일 / 7에 CentOS 6 , 패키지 이름입니다 glibc-devel.i686
.
에 SLES 는 glibc에-(STABLE) – 32 비트를 불렀다 – 할 zypper in glibc-devel-32bit
.
에 젠투 이 호출 sys-libs/glibc
– 할 emerge -1a sys-libs/gcc
[ 소스 ] (참고 : 하나는 사용할 수 있습니다 equery
이 정확한지 확인하기 위해, 할 equery belongs belongs /usr/include/gnu/stubs-32.h
)
에 아치 리눅스 패키지 이름입니다 lib32-glibc
– 할 pacman -S lib32-glibc
.
Ubuntu 12.04 를 사용하고 있습니까? 이 알려진 문제는 비 표준 위치에두고 파일을 . 당신은 것 또한 수행해야합니다
export LIBRARY_PATH=/usr/lib/$(gcc -print-multiarch)
export C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
export CPLUS_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
빌드하기 전에 (예 : .bashrc).
C ++ 코드도 컴파일하는 경우 32 비트 stdc ++ 라이브러리도 필요합니다. 이 경고가 표시되면
…. / usr / bin / ld : -lstdc ++를 찾을 수 없습니다 ….
에 우분투 당신이 할 필요가있을 것이다 sudo apt-get install g++-multilib
에 CentOS는 5 당신이 할 필요가있을 것이다yum install libstdc++-devel.i386
에 CentOS는 6 당신이 할 필요가있을 것이다yum install libstdc++-devel.i686
다른 시스템 용 패키지에서 자유롭게 편집하십시오.
답변
로부터 GNU UPC 웹 사이트 :
컴파일러 빌드가 치명적인 오류로 실패 함 : gnu / stubs-32.h : 해당 파일 또는 디렉토리가 없음
이 오류 메시지는 GCC / UPC multilib 기능이 활성화 된 64 비트 시스템에 나타나며 32 비트 버전의 libc가 설치되지 않았 음을 나타냅니다. 이 문제를 해결하는 방법에는 두 가지가 있습니다.
- 32 비트 버전의 glibc 설치 (예 : Fedora, CentOS, ..에서 glibc-devel.i686)
- 컴파일러 구성 명령에 “–disable-multilib”스위치를 제공하여 ‘multilib’빌드를 비활성화하십시오.
답변
을 시도하십시오 sudo apt-get install libc6-dev
.
apt-file
해당 파일이 해당 패키지에 속해 있음을 알려줍니다.
답변
이것은 GCC 위키 FAQ에 있습니다. http://gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h를 참조하십시오.
답변
fedora 18 상자에서 다음과 같은 오류가 발생했습니다.
1. /usr/include/gnu/stubs.h:7:27 : 치명적인 오류 : gnu / stubs-32.h : 해당 파일 또는 디렉토리 컴파일이 종료되지 않았습니다.
glibc.i686 및 glibc-devel.i686을 설치 한 후 다음 오류로 컴파일에 실패했습니다.
2. / usr / bin / ld : -lgcc_s / usr / bin / ld를 검색 할 때 호환되지 않는 /usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so를 건너 뛰기 : -lgcc_s collect2를 찾을 수 없음 : 오류 : ld가 1 개의 종료 상태를 리턴했습니다.
해결책:
컴파일 문제를 없애기 위해 glibc.i686 glibc-devel.i386 및 libgcc.i686을 설치했습니다 (yum install).
이제 32 비트 (-m32) 컴파일이 정상적으로 작동합니다.
답변
흠 잘 우분투 12.04에 있고 gcc 4.7.2를 컴파일하려고 할 때 이와 동일한 오류가 발생합니다.
libc6-dev-i386
패키지 설치를 시도 하고 다음을 얻었습니다.
Package libc6-dev-i386 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'libc6-dev-i386' has no installation candidate
또한 bash에서 올바른 환경 변수를 설정했습니다.
export LIBRARY_PATH=/usr/lib/$(gcc -print-multiarch)
export C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
export CPLUS_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
그러나, 나는 여전히 오류를 stubs-32.h
겪고 있었고 gcc가 빠른 diff를 한 후에 그것을 찾을 것으로 예상되는 위치로 간단히 복사 했습니다.
vic@ubuntu:/usr/include/i386-linux-gnu/gnu$ diff ../../gnu ./
Only in ./: stubs-32.h
Only in ../../gnu: stubs-64.h
vic@ubuntu:/usr/include/i386-linux-gnu/gnu$ sudo cp stubs-32.h ../../gnu/
[sudo] password for vic:
vic@ubuntu:/usr/include/i386-linux-gnu/gnu$ diff ../../gnu ./
Only in ../../gnu: stubs-64.h
vic@ubuntu:/usr/include/i386-linux-gnu/gnu$
지금 컴파일 중입니다. 더 많은 불평이 있는지 봅시다 …
답변
FWIW, 크로스 컴파일 할 때 / usr / include의 파일을 사용하는 것은 오류 (또는 적어도 미래의 고통의 근원) 냄새가납니다.