这次为了编译这个内核花费了我半个多月的时间.期间学习了不少关于内核的makfile和android编译的知识,也了解了下buildroot这个工具.写点东西记录一下把.blog写的不多,条理不清晰,有漏洞请见谅,只是提供个关键词给搜索的人.

第一次尝试编译时按照  Android A10(4.0.3)系统编译详解.pdf  编译打包出来的镜像可用,但是内核没有生成Module.symvers .后来进一步研究才知道 ./build.sh 脚本根本没有执行完.

-----------------------------------------------------------------------------------

编译驱动的时候
make  -C $S3C6410_KERNEL_PATH  M=${PWD}

输出
  WARNING: Symbol version dump /disk1/sources/cb-A10/lichee/linux-3.0/Module.symvers
           is missing; modules will have no dependencies and modversions.
和一堆类似这样的错误

/disk1/sources/cb-A10/lichee/linux-3.0/arch/x86/include/asm/processor.h:114:30: error: 'CONFIG_X86_L1_CACHE_SHIFT' undeclared here (not in a function)

解决方案:

把Makefile里的这两个变量这样改
ARCH                ?=arm
CROSS_COMPILE        ?=arm-none-linux-gnueabi-

-----------------------------------------------------------------------------------

编译内核:

 
如果按照那个pdf的方法,这时候才会发现原来根本没有按CONFIG_ARCH_SUN4I 配置编译内核.
查看 .config
CONFIG_ARCH_SUN4I 没有选上,CONFIG_ARCH_VERSATILE is not set 被选上了
又bing了半天....在这个帖子找到编译方法
http://m.oschina.net/blog/83234
 
#cd lichee/linux-3.0
#make mrproper
#make clean   如果你之前没有编译过那么这一步就不用了
#make  ARCH=arm  sun4i_crane_defconfig  
这个命令会将/arch/arm/configs/sun4i_crane_defconfig 复制到 .config.
我将这个config和buildroot/configs目录下的同名config比较了下.发现这两个不是同一个文件,但是./build.sh 执行时也并没有因为配置不同而重写.config 
 

生成.config 文件后不要用make menuconfig 更改, 应该手动更改.config .具体原因我也忘了,估计是因为make menuconfig 会读取 kconfig,修改覆盖了 build.sh 生成的config

返回上层

#./build.sh  -p  sun4i_crane  -k 3.0

最后按上面的方法编译还是会有点问题.手动修改.config解决. 最后./build.sh 后提示example模块不在.没有像帖子里说的那样成功返回. 但其实内核已经生成好了

-----------------------------------------------------------------------------------

编译内核成功后 脚本会自动到内核目录 make modules

这时会有一些 cp: cannot stat `nand.ko':  example.ko not found  之类的错误.

通常都是因为 makefile :  $(MAKE) -C $(LICHEE_KDIR) M=$(PWD) 这句错了.

应该是 makefile :  $(MAKE) -C $(LICHEE_KDIR) M=$(PWD) modules

-----------------------------------------------------------------------------------

No rule to make target `/disk1/sources/cb-A10/lichee/linux-3.0/modules/wifi/bcm40183/5.90.125.95.3/open-src/src/dhd/linux/dhd-cdc-sdmmc-gpl-3.0.8/linux_osl.o', needed by `/disk1/sources/cb-A10/lichee/linux-3.0/modules/wifi/bcm40183/5.90.125.95.3/open-src/src/dhd/linux/dhd-cdc-sdmmc-gpl-3.0.8/dhd.o'.  Stop.

如果按照该pdf,只要在makemuconfig 时把bcm相关项n掉就可以编译了.第一次编译时我是这么做的.

但是make  ARCH=arm  sun4i_crane_defconfig  后又出现链接文件已存在.

mkdir -p dhd-cdc-sdmmc-gpl-3.0.8
make -C dhd-cdc-sdmmc-gpl-3.0.8 -f /disk1/sources/cb-A10/lichee/linux-3.0/modules/wifi/bcm40181/5.90.125.69.2/open-src/src/dhd/linux/../../dhd/linux/Makefile SRCBASE=/disk1/sources/cb-A10/lichee/linux-3.0/modules/wifi/bcm40181/5.90.125.69.2/open-src/src/dhd/linux/../.. modules
make[2]: Entering directory `/disk1/sources/cb-A10/lichee/linux-3.0/modules/wifi/bcm40181/5.90.125.69.2/open-src/src/dhd/linux/dhd-cdc-sdmmc-gpl-3.0.8'
test -r .//disk1/sources/cb-A10/lichee/linux-3.0/modules/wifi/bcm40181/5.90.125.69.2/open-src/src/dhd/linux/../../dhd/sys/dhd_linux.c && ln -s /disk1/sources/cb-A10/lichee/linux-3.0/modules/wifi/bcm40181/5.90.125.69.2/open-src/src/dhd/linux/../../dhd/sys/dhd_linux.c .
make[2]: *** [dhd_linux.o] Error 1
make[2]: Leaving directory `/disk1/sources/cb-A10/lichee/linux-3.0/modules/wifi/bcm40181/5.90.125.69.2/open-src/src/dhd/linux/dhd-cdc-sdmmc-gpl-3.0.8'
make[1]: *** [objdir] Error 2

研究下modules/wifi/bcm40183/5.90.125.95.3/open-src/src/dhd/linux/Makefile

看到这句

540 %.o: %.c
541   # when make is called from 2.6, vpath doesn't work so we need to link the files.
542  test -r $< || ln -s $< .

把542改成 test -r $< || ln -f  -s $< .  .

还是报错 Too many levels of symbolic links ..其实我不太明白为什么是 || 这个符号,,test存在后不是应该放弃了吗. 是不是该用 &&

然后又各种改,报各种错

于是干脆将vpath 目录下所有 *.c 复制到modules/wifi/bcm40183/5.90.125.95.3/open-src/src/dhd/

终于编译通过..

分享一个分析makefile小技巧

$(warning  SUBARCH)
$(warning  $(SUBARCH))

可以在Makefile执行时打印这个变量.这个小技巧是我在一个不到2页的一个提问帖里的一个楼层找到的.超级有用!!!

全志A10_linux3.0内核编译记录相关推荐

  1. 编译内核启用KASan动态检测内核内存错误功能(ubuntu16.04 4.4.0内核编译升级到linux-4.4.252版本)

    目录 一.编译内核并配置支持KAsan 1.下载源码 2.安装编译内核必须的库 3.清理之前内核编译生成及相关配置 4.配置内核参数 5.开始编译 6.模块(驱动)安装 7.安装新编译的内核 8.修改 ...

  2. Android 9.0 内核编译实战(以一加6为例)

    前人栽树后人乘凉- 我们这里用EX内核编译做个示范 https://github.com/flar2/OnePlus6/tree/ElementalX-3.00 1.同步代码啦 git clone h ...

  3. 安卓9.0刷linux,Android 9.0 内核编译实战(以一加6为例)

    前人栽树后人乘凉... 1.同步代码啦 git clone https://github.com/flar2/OnePlus6.git -b ElementalX-3.00 我这里直接这么干了.最好还 ...

  4. iMX6UL---zlg M6G2C开发板内核编译记录

    开发板型号:zlg EPC-6G2C-L ARM架构:Cortex-A7 Kernel :4.1.15 CPU:[iMX_6UL系列]MCIMX6G2CVM05AA 主频528MHz RAM: IS4 ...

  5. linux imx6 内核编译,iMX6UL---zlg M6G2C开发板内核编译记录

    开发板型号:zlg EPC-6G2C-L ARM架构:Cortex-A7 Kernel :4.1.15 CPU:[iMX_6UL系列]MCIMX6G2CVM05AA 主频528MHz RAM: IS4 ...

  6. 全志a64linux内核编译,全志A64 lichee编译脚本build.sh分析

    全志A64 lichee编译脚本build.sh分析 发布时间:2018-08-22 15:58, 浏览次数:269 , 标签: lichee build sh lichee目录下的./build.s ...

  7. 华为荣耀6x内核编译修改PTRACE安装xposed/frida并打开ro.debuggable记录

    华为荣耀6x内核编译修改PTRACE安装xposed/frida并打开ro.debuggable记录 1.内核编译 2.刷机 3.ro.debugable 1.内核编译 注意要点: 内核源码 官方下载 ...

  8. 全志A33移植ubuntu系统记录(1)V1.0(分色排版)

    http://blog.csdn.net/lushengchu_luis/article/details/72457449 全志A33移植ubuntu系统记录(1) 大文实验室/大文哥 壹捌陆捌零陆捌 ...

  9. android8.1内核编译,Android8.1.0安卓源码编译

    换中科大源18.04 由于新安装的Ubuntu默认配置为Ubuntu官方源,基本软件包下载速度较慢,下面修改软件源: 备份下sources.list sudo cp /etc/apt/sources. ...

最新文章

  1. Spring配置文件中注入复杂类型属性
  2. 框架SpringMVC笔记系列 二 传值
  3. redhat配置dns服务器bind
  4. bapi sap 创建物料_SAP使用BAPI创建物料主数据的最小输入-阿里云开发者社区
  5. jvm运行时类加载机制_JVM体系结构:JVM类加载器和运行时数据区
  6. 闲话 - 火车硬座座位分布图
  7. 减治法在求解拓扑排序问题中的应用(JAVA)--有向无环图
  8. sql 生成一列1到10的数字_SQL 打印矩阵(三)
  9. 一切都是瞬息,一切都会过去,而那过去了的,将成为亲切的回忆。
  10. 蓝牙打印 设置打印样式_双编辑模式 打印自由更轻松!——海鸟贴纸打印机蓝牙按键版体验...
  11. 快速搭建一个前端模板
  12. java购物系统需求分析_java网上购物系统需求分析报告.doc
  13. 数字电路基础知识——组合逻辑电路(数据选择器MUX、多路复用器)
  14. 如何降低论文查重率?
  15. 【转】常用0x000000类型颜色代码表
  16. SONET/SDH概述
  17. 坚果pro android版本,坚果Pro有几个版本 哪个版本好?坚果Pro各版本的区别
  18. java字符串反转reverse();
  19. python计算最大公约数函数_python如何求解两数的最大公约数
  20. JNPF快速开发框架的八大功能介绍

热门文章

  1. Android_微信分享时提示“签名不对,请检查签名是否与开放平台上填写的一致。”
  2. UC浏览器版爱情买卖
  3. 魅蓝2 Android m,魅蓝2:Flyme
  4. 有了这三款软件,你家的智能电视和电视盒子就够用了
  5. 赛迪智库丨在符合伦理规范下做好AI全球化治理
  6. μCosII的体系结构
  7. GPS芯片获取的卫星时间会出现快几秒的原因
  8. 辐射4ap回复速度_磁共振清晰没辐射,为何却总推荐做CT,道理很简单,但有人不相信...
  9. [Gitlab CI/CD] Error loading key “/dev/fd/63“: invalid format
  10. PS学习-人像照片综合处理(四)--通道磨皮