2014-02-16 7 views
1

커널 헤더는 프로그램이 커널과 상호 작용할 수있는 방법을 지정하므로 표준 라이브러리를 작성해야합니다. 방금 arm-elf toolchain (http://wiki.ubuntuusers.de/GNU_ARM-Toolchain)을 만드는 방법을 설명하는 튜토리얼을 읽었습니다.커널 헤더가 gcc toolchain을 빌드하는 방법은 무엇입니까?

나를 혼란스럽게하는 것은이 프로세스에 커널 헤더가 포함되어 있지 않다는 것입니다. 그들은 (그들은 glibc는 대신 newlib에 사용) 그것은 그들이 단지 newlib에에서 헤더를 가지고 나에게 솔기

../newlib-1.16.0/configure --target=arm-elf --prefix=/opt/gnuarm --enable-interwork --enable-multilib --enable-target-optspace --with-float=soft 

../gcc-4.3.2/configure --target=arm-elf --prefix=/opt/gnuarm --enable-interwork --enable-multilib --enable-languages="c,c++" --enable-target-optspace --with-float=soft --with-newlib --with-headers=../newlib-1.16.0/newlib/libc/include/ --disable-nls 

및 NEWLIB와 GCC를 구성합니다. 이 디렉토리의 파일은 상당히 일반적인 것으로 보입니다. 나는 리눅스 커널 버전이이 프로세스의 어딘가에 나타날 것으로 기대하지만 그렇게하지는 않는다. Linux ABI가 커널 버전에서 커널 버전으로 바뀔 수 있다고 생각했습니다. 커널 (헤더)과 gcc 툴체인 간의 "연결"은 어떻게됩니까?

답변

0

Linux 커널 헤더가 없으면 GNU C 라이브러리를 빌드 할 수 없습니다. 대부분의 C 라이브러리 함수는 시스템 호출을 사용하여 구현되며 커널 헤더는 시스템 호출 인터페이스를 정의합니다. 물론 헤더에는 커널 소스가 있지만 C 라이브러리를 빌드하기 전에 소스를 패치하고 프로세서 아키텍처에 맞게 구성해야합니다.

관련 문제