2012-04-12 3 views
4

OS X에서 x86_64-elf 커널을 빌드하고 있습니다. 빌드 시스템이 autotools입니다.autotools : C 컴파일러가 실행 파일을 만들 수 없습니다.

configure: error: C compiler cannot create executables 
See `config.log' for more details 

그래서 내가 config.log을보고 참조 :

을 내가 autotools를에서 생성 된 구성 스크립트를 실행하면 나는 성공적으로 내가 문제가있는 OS X의에 x86_64의 엘프에 대한 교차 컴파일하려면 gcc가 컴파일
cannot find crt0.o: No such file or directory 
collect2: error: ld returned 1 exit status 

이것은 완벽합니다. 연결된 런타임이 없으므로 크로스 컴파일러는 실행 파일을 생성하지 않습니다. 그러나 나는 컴파일러가 실행 파일을 생성 할 필요가 없거나 그것을 원하지 않는다. 나는 그것을 부트 로더에 적절히 링크 할 것이다. autotools가이를 확인하지 못하게하려면 어떻게해야합니까?

+0

'configure.ac' 스크립트에서'CC' 변수를 설정할 수 없습니까? 그러나 다른 테스트에서 스크립트가 실행하려고하는 실행 파일을 만들 수 있으므로 작동하지 않을 수 있습니다. –

+0

configure를 실행할 때 CC 변수를 설정합니다. configure.ac에서 설정하는 것은 정말 나쁜 형식입니다. 그럼에도 불구하고 컴파일러가 실행 파일을 만들 수 있는지 확인하는 방법에 대한 질문에 대답하지 않습니다. – dschatz

+0

크로스 - 컴파일하는 구성을 알리십시오. './configure --host = x86_64-unknown-linux'를 사용하십시오. 빌드 유형이 호스트 유형과 다른 경우 특정 테스트를 건너 뛸 수 있습니다. –

답변

0

시도 :

DARWIN_VERSION_FULL=darwin`uname -r` 
./configure --build=x86_64-apple-${DARWIN_VERSION_FULL} --host=x86_64-unknown-linux 

지금 configure 크로스 컴파일 모드로, 그 테스트를 실행 중지해야합니다.

+0

아무 것도 변경하지 않습니다. 그 가치가 무엇인지, 저는 x86_64-unknown-linux를 만들지 않습니다. x86_64-elf를 빌드합니다. – dschatz

+0

크로스 컴파일러를 가리 키도록 환경 변수 (예 : CC, LD 등)를 설정하고 있습니까? – ldav1s

2

당신이 configure 스크립트합니다 (CFLAGS 환경 변수에 추가) 실행할 때 다음과 같은 GCC 플래그를 지정하고 있는지 확인 :

-nostdlib -nostartfiles -nodefaultlibs -ffreestanding 

당신이 마지막에 다음을 추가하는 방법을 모르는 경우를 다음과 같은 것을 시도해보십시오 :

export CFLAGS=$CFLAGS -nostdlib -nostartfiles -nodefaultlibs -ffreestanding 
관련 문제