GCC를 사용한 크로스 빌드를 위한 관리형 CFLAGS

GCC를 사용한 크로스 빌드를 위한 관리형 CFLAGS

나는 짓고 싶다락박스MIPS 대상의 소스입니다.그들의 위키에 따르면툴체인이 필요해요바이너리틸스 v2.17그리고GCC v4.1.2~을 위한mipsel-elf대상과 CFLAGS="-U_FORTIFY_SOURCE -fgnu89-inline"두 가지 모두에 대한 구성 라인은 다음과 같습니다.

CFLAGS='-U_FORTIFY_SOURCE -fgnu89-inline' ./configure --target=mipsel-elf --enable-languages=c --disable-libssp --disable-docs

binutils를 빌드하고 설치할 수 있지만 GCC는 "자동 빌드" 및 수동 방법 모두에서 실패합니다.완전한 생산 일지):

make[4]: Entering directory `/home/malte/Software/devel/linux-dev/ubuntu/gcc/gcc-4.1.2/host-x86_64-unknown-linux-gnu/gcc'
/home/malte/Software/devel/linux-dev/ubuntu/gcc/gcc-4.1.2/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/home/malte/Software/devel/linux-dev/ubuntu/gcc/gcc-4.1.2/host-x86_64-unknown-linux-gnu/gcc/ -B/usr/local/mipsel-elf/bin/ -B/usr/local/mipsel-elf/lib/ -isystem /usr/local/mipsel-elf/include -isystem /usr/local/mipsel-elf/sys-include -O2 -O2 -U_FORTIFY_SOURCE -fgnu89-inline  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -I. -I. -I../.././gcc -I../.././gcc/. -I../.././gcc/../include -I../.././gcc/../libcpp/include   -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-unit-at-a-time -Dinhibit_libc -G 0 \
      -c ../.././gcc/crtstuff.c -DCRT_BEGIN \
      -o crtbegin.o
cc1: error: unrecognized command line option "-fgnu89-inline"
make[4]: *** [crtbegin.o] Error 1

내가 알 수 있는 한, 문제는 CFLAGS호스트 컴파일러가 xgcc이 플래그를 모르거나 필요로 하지 않는 "최소" 컴파일러에 전달한다는 것입니다. -fgnu89-inlineGCC 4.1.2는 C89 함수 인라인 의미론을 사용하기 때문에 빌드가 실패하지 않습니다 .

-fgnu89-inline질문: 두 번째 단계에서 최소 컴파일러 대신 호스트 컴파일러로 전달되도록 빌드를 구성하려면 어떻게 해야 합니까 ?

-fgnu89-inline로 교체하면 빌드가 성공한다는 것을 알았는데 -std=gnu89이것이 잘못된 것 같습니다. 임베디드 장치에 대한 크로스 컴파일은 충분히 까다롭기 때문에 또 다른 오류 원인을 소개하고 싶지 않습니다.

시스템 메시지:

  • 운영 체제: 우분투 14.04(x86_64)
  • 호스트 binutils: 2.26.1-1ubuntu1~16.04.3
  • 호스트 gcc: 6.2.0-3ubuntu11~14.04
  • GNU 브랜드: 3.81
  • 자동 구성: 2.13

보너스:빌드 구성에 추가하면 --with-arch=<ANYTHING>위와 비슷한 오류가 발생합니다.

cc1: error: unrecognized command line option "-march=native"
cc1: error: unrecognized command line option "-fgnu89-inline"

관련 정보