2012-03-10 7 views
2

저는 sysroot 방식을 사용하여 GCC 4.6.3으로 ARM 크로스 툴 체인을 구축하고 있습니다. 내가 LFS 지침을 따르고 gmp, mpfr 및 mpc 소스 폴더를 GCC 소스 폴더에 복사하면 경로가 정확하더라도 mpc가 mpfr을 찾을 수 없으므로 빌드가 실패합니다.ARM 도구 체인 빌드

정적으로 링크 된 gmp, mpfr 및 mpc를 수동으로 컴파일 할 때 GCC 빌드가 오류없이 완료됩니다.

이제 내 질문에 gch, mpfr 및 mpc를 툴체인이 완성 될 때 삭제되는 툴체인 빌드 디렉토리의 임의의 위치에 설치해야한다면 GCC 빌드의 다른 단계에서 사용할 수 있습니다. 접두어를 $ SYSROOT으로 지정하면 도구 체인의 영구적 인 부분이됩니까? 가장 정확한 팅 무엇입니까?

답변

0

크로스 컴파일러 인프라로 다른 접근 방식을 취하고 있습니다. 디렉토리가 $HOME/local이고 예상 서브 디렉토리가 모두 bin/, lib/, include/, etc.$HOME/local/bin이고 내 $PATH$HOME/local/lib이고 $LD_LIBRARY_PATH (또는 다윈의 경우 $DYLD_LIBRARY_PATH)입니다.

I 다음 구축과 함께, --prefix=$HOME/local에, GMP, mpfr, MPC를 설치

> ./configure --prefix=$HOME/local --enable-cxx [--disable-fft] 
> ./configure --prefix=$HOME/local --with-gmp=$HOME/local 
> ./configure --prefix=$HOME/local --with-mpfr=$HOME/local --with-gmp=$HOME/local 

I 빠르고 일반적으로 크로스 gcc가 작동하지 않습니다 이러한 패키지를위한 플랫폼에 의존 플래그를 사용할 수 있습니다 --target 트리플 :

> env CFLAGS="-pipe -Wall -O2 -march=core2" CXXFLAGS="..." ./configure ... 

장점입니다 I 등 크로스 컴파일러 인프라의 GMP, mpfr, MPC 라이브러리 포함을 구축 곳, 접근 - 같은 libs와 하나 이상의 크로스 사용할 수 있습니다 -컴파일러. 즉, 4.6.x AVR, x86_64-pc-elf 독립형, ARM EABI를 보유하고 있습니다. gcc 구성 옵션을 사용하여 각 : 나는 툴 체인 빌드 (나는 수시로)를 fsck를 할 때

분명히
> --with-mpc=$HOME/local --with-mpfr=$HOME/local --with-gmp=$HOME/local 

, 적어도 나는 빌드의이 부분을 반복 할 필요가 없습니다.

0

크로스 컴파일러 작성은 지루한 작업입니다. 교차 컴파일러를 빌드하는 데 필요한 모든 단계를 자동화하기 위해 crosstool-NG을 사용하지 않는 이유는 무엇입니까?

관련 문제