제대로하는 데 시간이 걸렸습니다. ARM 타겟을 위해 Ubuntu에서 크로스 컴파일 할 때이 문제가 발생했습니다. 나는 그것을 다음과 같이 해결했다.
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib ./autogen.sh --build=`config.guess` --host=armv5tejl-unknown-linux-gnueabihf
CFLAGS는 autogen.sh/configure와 함께 사용되지 않습니다.이를 사용하면 "configure : error : C compiler cannot create executables"오류가 발생했습니다. 빌드 환경에서 autogen.sh 스크립트를 사용하고 있었는데, autogen.sh 스크립트가없는 경우 위 명령에서 ./autogen.sh를 ./configure로 대체했습니다. --host 매개 변수를 얻기 위해 대상 시스템에서 config.guess를 실행했습니다.
autogen.sh/configure를 성공적으로 실행 한 후 다음으로 컴파일하십시오.
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib CFLAGS="-march=... -mcpu=... etc." make
내가 사용하기로 선택한 CFLAGS는 "-march = armv5te -fno-tree-vectorize -mthumb-interwork -mcpu = arm926ej-s"입니다. 모든 include 디렉토리를 올바르게 설정하는 데 시간이 걸립니다. 일부 include는 크로스 컴파일러를 가리키고 일부는 루트 파일 시스템 include를 가리키고 일부는 충돌이있을 수 있습니다.
나는 이것이 완벽한 대답이 아니라고 확신합니다. 그리고 여전히 Makefile에서 / ccrootfs가 아닌 /를 가리키는 일부 include 디렉토리가 보입니다. 이 문제를 해결하는 방법을 알고 싶습니다. 이것이 누군가를 돕기를 바랍니다.
export C_INCLUDE_PATH=~/local/include:$C_INCLUDE_PATH
컴파일러는 먼저에서 검색~/local/include
하고 첫 번째 디렉토리에서 포함을 찾지 못한 경우에만 $ C_INCLUDE_PATH에서 검색 합니다.