编译嵌入式linux内核的若干问题

编译嵌入式linux内核与编译基于X86的内核有很多不同的地方。

1、首先配置内核使用的命令如下,需要制定内核的构架,否则内核的配置还是X86的内核

make menuconfig ARCH=arm

2、编译内核的命令如下,也与X86的命令有所不同,需要制定构架以及交叉编译工具

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

3、除了上面两个不一样的地方,编译的时候可能还会遇到一些问题,如果遇到一下问题

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.

这个错误可能是内核文件版本比较低的原因。为了解决这个问题,我们先来分析一下这一句的意思,提示是不能使用defined(@array),(也许你可以省略掉defined()),在文件kernel/timeconst.pl的373行。提示已经比较清楚了,接下来打开内核文件中kernel文件夹下的timeconst.pl文件。找到373行,有如下代码

        if (!defined(@val)) {
		@val = compute_values($hz);
	}

将这段代码修改为

	if (!(@val)) {
		@val = compute_values($hz);
	}

则问题可以解决。

如果遇到下面的问题

"mkimage" command not found - U-Boot images will not be built

这里提示mkimage命令找不到,这表明编译内核时的某些依赖缺失,经过查找,得到解决办法,执行如下命令

sudo apt-get install u-boot-tools

安装之后,就可以顺利编译内核了。

发布了12 篇原创文章 · 获赞 3 · 访问量 9853

猜你喜欢

转载自blog.csdn.net/bhniunan/article/details/104073990
今日推荐