Difference between revisions of "Raspberry Pi Kernel Compilation"
(Added OSX instructions) |
|||
Line 88: | Line 88: | ||
=== OS X === | === OS X === | ||
− | + | ==== getting the compiler ==== | |
+ | |||
+ | Downoad and install GNU ARM toolchain [http://www.yagarto.de/#downloadmac yagarto] | ||
+ | |||
+ | ==== getting the sources ==== | ||
+ | |||
+ | create a directory where you can work on the raspberry pi software. I called mine "raspberrypi". Then clone the git repository. | ||
+ | |||
+ | mkdir raspberrypi | ||
+ | cd raspberrypi | ||
+ | git clone https://github.com/raspberrypi/linux.git | ||
+ | cd linux | ||
+ | |||
+ | ==== compiling ==== | ||
+ | |||
+ | Next you have to configure the kernel: | ||
+ | cp arch/arm/configs/bcmrpi_cutdown_defconfig .config | ||
+ | make ARCH=arm CROSS_COMPILE=/path/to/yagarto/bin/arm-none-eabi- oldconfig | ||
+ | |||
+ | Then building the kernel: | ||
+ | make ARCH=arm CROSS_COMPILE=/path/to/yagarto/bin/arm-none-eabi- -k | ||
+ | |||
+ | You can use the "-j" flag to improve compilation time. If you have a dual core machine you can use "-j 3", for a quad core machine you can use "-j 6", and so on. | ||
+ | |||
+ | '''If you get an error message that elf.h is missing''' | ||
+ | |||
+ | install [http://guide.macports.org/#installing macports] | ||
+ | install libelf and symlink to /usr/libelf: | ||
+ | sudo port install libelf && sudo ln -s /opt/local/include/libelf /usr/include/libelf | ||
+ | copy [http://opensource.apple.com/source/dtrace/dtrace-48/sys/elf.h?txt elf.h] to /usr/include | ||
+ | |||
Revision as of 18:02, 5 March 2012
Back to the Hub.
Software & Distributions:
Software - an overview.
Distributions - operating systems and development environments for the Raspberry Pi.
Kernel Compilation - advice on compiling a kernel.
Performance - measures of the Raspberry Pi's performance.
Programming - programming languages that might be used on the Raspberry Pi.
Raspberry PI kernel compilation
You can compile the kernel on the board itself, but because of the limited resources it will take a lot of time. Alternatively you can crosscompile the kernel on another machine running Linux, Windows or OS X.
Compiling on the Raspberry pi itself
TODO: write the rest of this section.
Cross compiling on a foreign machine
Ubuntu Linux
getting the compiler
On Ubuntu Oneiric getting the arm cross compiler can be as easy as:
sudo apt-get install gcc-4.6-arm-linux-gnueabi sudo apt-get install git #jhauser14905 -- might as well state the obvious, you need git installed!
(TODO: Is this the right one? More packages required? I did this a while ago! TODO: Other distributions?)
getting the sources
create a directory where you can work on the raspberry pi software. I called mine "raspberrypi". Then clone the git repository.
mkdir raspberrypi cd raspberrypi git clone https://github.com/raspberrypi/linux.git cd linux
jhauser14905: on 2012-01-28, with all package updates applied, i had to add the following symlink in order to get the make commands to work. otherwise they would error out
sudo ln -s /usr/bin/arm-linux-gnueabi-gcc-4.6 /usr/bin/arm-linux-gnueabi-gcc
compiling
Next you have to configure the kernel:
cp arch/arm/configs/bcmrpi_cutdown_defconfig .config make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig
Then building the kernel:
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k
You can use the "-j" flag to improve compilation time. If you have a dual core machine you can use "-j 3", for a quad core machine you can use "-j 6", and so on.
If you get the error messages that arm-linux-gnueabi-gcc cannot be found when running make, run the following command:
sudo ln -s /usr/bin/arm-linux-gnueabi-gcc-4.6 /usr/bin/arm-linux-gnueabi-gcc
this creates a symbolic link to the 4.6 gcc binary
Gentoo Linux
getting the compiler
Build the cross toolchain:
crossdev -v -t arm-unknown-linux-gnueabi
This command will most certainly fail on your machine. What you have to do to make it work, is to adjust the cross tools versions with the "--b", "--g", "--k" and "--l" flags. For the exact usage refer to the crossdev manpage. A good starting point for figuring out the right versions are those which are stable for the arm architecture.
getting the sources
create a directory where you can work on the raspberry pi software. I called mine "raspberrypi". Then clone the git repository.
mkdir raspberrypi cd raspberrypi git clone https://github.com/raspberrypi/linux.git cd linux
compiling
Next you have to configure the kernel:
cp arch/arm/configs/bcmrpi_cutdown_defconfig .config make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig
Then building the kernel:
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k
You can use the "-j" flag to improve compilation time. If you have a dual core machine you can use "-j 3", for a quad core machine you can use "-j 6", and so on.
Windows
TODO
OS X
getting the compiler
Downoad and install GNU ARM toolchain yagarto
getting the sources
create a directory where you can work on the raspberry pi software. I called mine "raspberrypi". Then clone the git repository.
mkdir raspberrypi cd raspberrypi git clone https://github.com/raspberrypi/linux.git cd linux
compiling
Next you have to configure the kernel:
cp arch/arm/configs/bcmrpi_cutdown_defconfig .config make ARCH=arm CROSS_COMPILE=/path/to/yagarto/bin/arm-none-eabi- oldconfig
Then building the kernel:
make ARCH=arm CROSS_COMPILE=/path/to/yagarto/bin/arm-none-eabi- -k
You can use the "-j" flag to improve compilation time. If you have a dual core machine you can use "-j 3", for a quad core machine you can use "-j 6", and so on.
If you get an error message that elf.h is missing
install macports install libelf and symlink to /usr/libelf:
sudo port install libelf && sudo ln -s /opt/local/include/libelf /usr/include/libelf
copy elf.h to /usr/include
|