Eclipse에서 Linux 커널 컴파일

Eclipse에서 Linux 커널 컴파일

저는 Snow Leopard를 실행하는 Mac을 가지고 있는데 Linux 커널을 컴파일할 수 없다는 것을 알고 있습니다. 커널을 컴파일하기 위해 Linux VM(virtualbox)을 사용하는데 Eclipse(galileo)에서 컴파일이 가능한지 알고 싶습니다.

답변1

Mac에서는 커널을 빌드할 수 없다는 정보가 정확하지 않습니다. 크로스 컴파일러를 설정하고 x86을 아키텍처로 대상으로 설정하거나 Power PC용 커널을 구축할 수 있습니다.겁쟁이Linux 배포판에서는 이미 그렇게 하고 있습니다. ㅏ견본ARM7용 크로스 컴파일러를 설정하는 과정:

저는 3월에 ARM7 프로세서를 사용하여 새로운 임베디드 프로젝트를 시작했기 때문에 GNU ARM 툴체인을 사용해 보고 싶었습니다. 기본적으로 저는 Mac OS X의 Macbook Pro에서 GCC 크로스 컴파일러와 Eclipse CDT를 사용한 크로스 개발에 관심이 있습니다. 이것이 작동하는지 살펴 보겠습니다. ;-)

따라서 첫 번째 단계로 Mac OS X에서 GNU ARM 툴체인을 구축하는 방법은 다음과 같습니다(이는 Linux에서 툴체인을 구축하는 것과 다르지 않습니다).

먼저 필요한 패키지(binutils, gcc, newlib 및 gdb)를 다운로드하고 압축을 풉니다.

$ mkdir ~/crossgcc && cd ~/crossgcc
$ wget ftp://sourceware.org/pub/binutils/snapshots/binutils-2.18.50.tar.bz2
$ tar jxf binutils-2.18.50.tar.bz2
$ wget http://ftp.gnu.org/pub/gnu/gcc/gcc-4.2.3/gcc-4.2.3.tar.bz2
$ tar jxf gcc-4.2.3.tar.bz2
$ wget ftp://sources.redhat.com/pub/newlib/newlib-1.16.0.tar.gz
$ tar zxf newlib-1.16.0.tar.gz
$ wget http://ftp.gnu.org/pub/gnu/gdb/gdb-6.6.tar.gz
$ tar zxf gdb-6.6.tar.gz

설치 디렉터리는 /usr/local/crossgcc여야 합니다.

$ sudo mkdir /usr/local/crossgcc
$ sudo chmod 777 /usr/local/crossgcc

먼저 binutil을 빌드합니다.

$ mkdir build-binutils && cd build-binutils
$ ../binutils-2.18.50/configure --target=arm-elf \
--prefix=/usr/local/crossgcc/ 2>&1 | tee configure.log
$ make all install 2>&1 | tee make.log
$ export PATH=$PATH:/usr/local/crossgcc/bin

C/C++ 지원으로 gcc 컴파일러를 빌드합니다.

$ cd ../gcc-4.2.3
$ ln -s ../newlib-1.16.0/newlib .
$ ln -s ../newlib-1.16.0/libgloss .
$ cd ..
$ mkdir build-gcc && cd build-gcc
$ ../gcc-4.2.3/configure --target=arm-elf \
--prefix=/usr/local/crossgcc/ --with-newlib \
--with-gnu-as --with-gnu-ld --enable-languages=c,c++ 2>&1 | tee configure.log
$ make all install 2>&1 | tee make.log

gdb 디버거를 빌드합니다.

$ cd ..
$ mkdir build-gdb && cd build-gdb
$ ../gdb-6.6/configure --target=arm-elf --prefix=/usr/local/crossgcc/
$ make all install 2>&1 | tee make.log

귀하의 경우 커널을 원하지 않는 대상 아키텍처를 컴파일하려면 크로스 컴파일러가 필요합니다. 컴파일은 컴퓨터에서 로컬로 실행되므로 VirtualBox에서 빌드하는 것보다 빠릅니다.

답변2

모든 헤더 파일과 적절한 도구가 있는 한 다른 시스템에서 Linux 커널을 컴파일하는 것이 가능합니다. Eclipse를 사용하면 제대로 작동하지 않습니다(전혀 있더라도). Linux 명령줄에 "make config"를 입력합니다. 커널을 구성하는 옵션입니다. 그런 다음 소스 코드와 함께 제공되는 README 파일을 읽으십시오. 컴파일 및 설치에 대한 정보를 제공합니다. 커널에 대한 자세한 정보를 보려면 이 기사 시리즈(http://www.linux.org/threads/%EF%BB%BFthe-linux-kernel-introduction.4203/).

관련 정보