我想了解更多有关内核如何工作的信息。其中一部分是自己编译。如何在Ubuntu主机上交叉编译内核?

#1 楼

准备
首先,我们需要安装必需的先决条件。我假设您具有sudo访问权限。
sudo apt-get install git ncurses-dev make gcc-arm-linux-gnueabi



git是Linux内核团队使用的版本控制系统。

ncurses是用于构建控制台菜单。 menuconfig是必需的。

make为我们运行编译。

gcc-arm-linux-gnueabi是交叉编译器。

接下来,我们需要检索源代码,运行:
git clone https://github.com/raspberrypi/linux raspberrypi-linux
cd raspberrypi-linux

这会将源代码克隆到名为raspberrypi-linux的目录并更改为该目录。
编译
我们首先需要通过运行来移动配置文件
cp arch/arm/configs/bcmrpi_cutdown_defconfig .config

然后配置内核构建
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig

可选:使用menuconfig自定义构建
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig

然后运行编译
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k

参考文献

http://elinux.org/RPi_Kernel_Compilation
https://github.com/raspberrypi/linux
http://packages.ubuntu.com/precise/ gcc-arm-linux-gnueabi
http://mitchtech.net/raspberry-pi-kernel-compile/


评论


非常感谢您提供使用crosstool-ng的替代方法。

–earthmeLon
2012年7月14日在21:38

在我的情况下,CROSS_COMPILE只是一个前缀,因此以下内容就足够了(末尾没有gcc):make ARCH = arm CROSS_COMPILE = / usr / bin / arm-linux-gnueabi- -k

–danger89
2014年6月28日14:21



#2 楼

我认为Alex是正确的,但是gcc-arm-linux-gnueabi是为arm cpus编译的,没有硬件浮点单元。您可以在以下网址找到具有armhf支持的交叉编译器:https://github.com/raspberrypi/tools
,以及从此处开始的好教程:http://hertaville.com/2012/09/28/开发环境Raspberry-pi-cross编译器/

#3 楼

官方文档

https://www.raspberrypi.org/documentation/linux/kernel/building.md(GitHub)

我建议您按照那里的步骤进行操作,或在某些内容过时或不够清晰时发送拉取请求:这些说明最有可能是正确的且是最新的,因为它们是项目官方文档的一部分。