内核编译

唐华春 2013-04-16 12:22:35
使用make bzImage命令生成的zImage内核镜像在x86和ARM平台上都可以使用吗?make menuconfig时我怎么知道编译生成的内核将被安装在哪个平台呢?求普及x86和ARM平台内核的区别
...全文
340 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nadleeh 2013-04-27
  • 打赏
  • 举报
回复
引用 楼主 cghver 的回复:
使用make bzImage命令生成的zImage内核镜像在x86和ARM平台上都可以使用吗?make menuconfig时我怎么知道编译生成的内核将被安装在哪个平台呢?求普及x86和ARM平台内核的区别
看顶级makefile中的 ARCH项和COMPILE项
anpeng5210 2013-04-26
  • 打赏
  • 举报
回复
编译之前要修改Makefile的,里面有对应的编译工具,决定了zImage 在哪个平台能运行啊。
webtest123 2013-04-20
  • 打赏
  • 举报
回复
为什么要打patch?不明白。
Kallen_man 2013-04-19
  • 打赏
  • 举报
回复
root@ubuntu:/usr/src# ls linux-3.2.0-38-generic-pae linux-3.2.8 linux-3.2.8.tar.gz patch-3.2.8.gz root@ubuntu:/usr/src# patch -p0 < patch-3.2.8 bash: patch-3.2.8: 没有那个文件或目录 root@ubuntu:/usr/src# patch -p0 < patch-3.2.8.gz patch unexpectedly ends in middle of line patch: **** Only garbage was found in the patch input. root@ubuntu:/usr/src# cd linux-3.2.0-38-generic-pae root@ubuntu:/usr/src/linux-3.2.0-38-generic-pae# make menuconfig HOSTCC scripts/basic/fixdep In file included from /usr/include/i386-linux-gnu/bits/posix1_lim.h:157:0, from /usr/include/limits.h:145, from /usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/limits.h:169, from /usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/limits.h:34, from scripts/basic/fixdep.c:114: /usr/include/i386-linux-gnu/bits/local_lim.h:39:26: 致命错误: linux/limits.h:没有那个文件或目录 编译中断。 make[1]: *** [scripts/basic/fixdep] 错误 1 make: *** [scripts_basic] 错误 2 root@ubuntu:/usr/src/linux-3.2.0-38-generic-pae# 我这是内核编译时出现的错误 你们都是怎么编译的??????
girlkoo 2013-04-16
  • 打赏
  • 举报
回复
引用 楼主 cghver 的回复:
使用make bzImage命令生成的zImage内核镜像在x86和ARM平台上都可以使用吗?make menuconfig时我怎么知道编译生成的内核将被安装在哪个平台呢?求普及x86和ARM平台内核的区别
平台的确定一般是通过修改Makefile来指定的,指定步骤如下: (1)在Linux源码目录下打开Makefile,修改ARCH项,如果是PC,则指定为x86架构,如果是arm则指定为arm架构。 (2)指定相应架构的编译器,x86下的编译器为gcc,arm的是arm-linux-gcc。
引用 3 楼 cghver 的回复:
引用 1 楼 xiaopeng806 的回复:你要指定对应的编译器,x86的你用gcc就可以了,arm平台的要用arm-linux-gcc我的意思是编译内核的时候,不是编译应用程序,编译内核的命令不都一样吗?make bzImage
编译内核的命令虽然都是make bzImage,但是make是通过Makefile规则来编译内核的,也就是说执行指令make bzImage时,实际上执行的Makefile中的指令,所以,你说的编译内核的命令都一样只是假象。
falloutmx 2013-04-16
  • 打赏
  • 举报
回复
当然不是。有参数的,一般都是ARCH=arm CROSS_COMPILE=xxxxx,省略了就用默认的了 menuconfig里面也可以直接填CROSS_COMPILE的
唐华春 2013-04-16
  • 打赏
  • 举报
回复
引用 1 楼 xiaopeng806 的回复:
你要指定对应的编译器,x86的你用gcc就可以了,arm平台的要用arm-linux-gcc
我的意思是编译内核的时候,不是编译应用程序,编译内核的命令不都一样吗?make bzImage
duloveding 2013-04-16
  • 打赏
  • 举报
回复
上边的有道理。
xiaopeng806 2013-04-16
  • 打赏
  • 举报
回复
你要指定对应的编译器,x86的你用gcc就可以了,arm平台的要用arm-linux-gcc
nadleeh 2013-04-16
  • 打赏
  • 举报
回复
引用 楼主 cghver 的回复:
使用make bzImage命令生成的zImage内核镜像在x86和ARM平台上都可以使用吗?make menuconfig时我怎么知道编译生成的内核将被安装在哪个平台呢?求普及x86和ARM平台内核的区别
找到顶级make file的ARCH 和CROSS_COMPILE menuconfig中也可以看的出是哪个体系的哪个cpu

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧