Development Tip

gcc는 i686에서 bits / predefs.h를 찾을 수 없습니다.

yourdevel 2020. 11. 4. 20:55
반응형

gcc는 i686에서 bits / predefs.h를 찾을 수 없습니다.


좋아요, 우분투 12.04 64 비트에서 32 비트로 전환하고 설치했습니다. build-essential.

그런 다음 GMP-5.0.5, MPFR-3.1.1, MPC-1.0, ISL-0.10 및 CLOOG-0.17.0을 컴파일하고 설치했습니다. 기본 gcc 트렁크의 복사본을 확인하고 다음 구성 줄 (별도의 디렉터리에서)로 빌드하려고했습니다.

../svnsrc/configure --prefix=/usr/GCC/svn --enable-__cxa_atexit --with-plugin-ld=/usr/bin/ld.gold --enable-threads=posix --enable-werror --enable-build-with-cxx --with-gmp=/usr/GCC/prereq/svn --with-mpfr=/usr/GCC/prereq/svn --with-mpc=/usr/GCC/prereq/svn --with-isl=/usr/GCC/prereq/svn --with-cloog=/usr/GCC/prereq/svn --enable-languages=c,c++

구성이 잘 실행되어 실행했습니다 make && make check. 이것은 잠시 동안 잘 실행되었지만 다음 오류로 인해 실패했습니다.

/home/matt/GCC/svnbuild/./gcc/xgcc -B/home/matt/GCC/svnbuild/./gcc/ -B/usr/GCC/svn/i686-pc-linux-gnu/bin/ -B/usr/GCC/svn/i686-pc-linux-gnu/lib/ -isystem /usr/GCC/svn/i686-pc-linux-gnu/include -isystem /usr/GCC/svn/i686-pc-linux-gnu/sys-include    -g -O2 -O2  -g -O2 -DIN_GCC   -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fpic -mlong-double-80 -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector   -fpic -mlong-double-80 -I. -I. -I../.././gcc -I../../../svnsrc/libgcc -I../../../svnsrc/libgcc/. -I../../../svnsrc/libgcc/../gcc -I../../../svnsrc/libgcc/../include -I../../../svnsrc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS  -DUSE_TLS -o _muldi3.o -MT _muldi3.o -MD -MP -MF _muldi3.dep -DL_muldi3 -c ../../../svnsrc/libgcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS
In file included from /usr/include/stdio.h:28:0,
                 from ../../../svnsrc/libgcc/../gcc/tsystem.h:88,
                 from ../../../svnsrc/libgcc/libgcc2.c:29:
/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory
 #include <bits/predefs.h>
                          ^
compilation terminated.
make[3]: *** [_muldi3.o] Error 1
make[3]: Leaving directory `/home/matt/GCC/svnbuild/i686-pc-linux-gnu/libgcc

나는 둘러 보았지만 내가 찾은 모든 gcc-multilib것은 Ubuntu와 Debian이 라이브러리를 분리하는 mutiarch 시스템을 사용하기 때문에이 오류가 x86_64에서 . 좋아요.하지만 i686을 사용하고 있는데 왜 64 비트 라이브러리가 필요한가요? 어떤 도움을 주시면 감사하겠습니다. 감사.


시도해보십시오

sudo apt-get install gcc-multilib

32 비트 시스템을 설치하면 컴퓨터 아키텍처가 변경되지 않는다고 생각합니다. 컴퓨터는 항상 64 비트 컴퓨터이기 때문입니다. 64 비트 버전의 Ubuntu를 설치하면 더 나은 멀티 코어 성능 만 제공됩니다. 컴퓨터가 여전히 64 비트 컴퓨터이므로 64 비트 컴퓨터에서 컴파일 할 C 컴파일러가 필요할 수 있습니다. 따라서 gcc-multilib. 나는 생각한다.


gcc-multilib 트릭은 나를 위해 작동하지 않았습니다. 대신 빌드 환경에서 이것을 설정하면 트릭이되었습니다.

C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)

참고 URL : https://stackoverflow.com/questions/12591629/gcc-cannot-find-bits-predefs-h-on-i686

반응형