第一次尝试编译时按照 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存在后不是应该放弃了吗. 是不是该用 &&

  然后又各种改,报各种错 www.qcwyo68.com

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

  终于编译通过..

  分享一个分析makefile小技巧

  $(warning SUBARCH)

  $(warning $(SUBARCH))

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

全志A10_linux3.0内核编译记录的更多相关文章

  1. ubuntu12.04 内核编译 记录

    近期学习linux这门课,做实验要编译系统内核,然后..五一没事就捣鼓了一上午,还好成功了,以下就写下过程吧. 注意:以下过程的有些make 这类的命令 可能要获取权限 1.開始时能够查一下自己如今系 ...

  2. android5.0 aosp编译记录(由于机器硬件原因,改为4.4.2编译通过)

    编译环境必须是64位系统啊,妥妥的又装了64位的ubuntu,虚拟机推荐server版本,不带x省性能…… 接着要装openjdk 1.7,记得更新一下系统的源,下面这个不错 deb http://m ...

  3. 在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

    实验环境:Ubnuntu 64位(推荐使用14.04)+Xshell 阿里云现在提供的云服务器很好用的,用来编译内核性能也不错.本文介绍最基本的内核编译方法,为了方便,所有操作均在root用户下进行. ...

  4. [原创]Nexus5 内核编译烧录过程记录

    参考Android系统源代码情况分析第二章进行实践,为了提高效率,也为了增加实践机会,使用Nexus5进行内核编译.需要说明的是,Android源代码工程默认是不包含它所使用的Linux内核源码,如果 ...

  5. 009全志R16平台tinav3.0下编译不过的问题

    009全志R16平台tinav3.0下编译不过的问题 2018/11/13 11:39 版本:V1.0 开发板:SC3817R SDK:tina v3.0 1.01原始编译全志r16平台tinav3. ...

  6. 全志tina v3.0系统编译时的时间错误的解决(全志SDK的维护BUG)

    全志tina v3.0系统编译时的时间错误的解决(全志SDK的维护BUG) 2018/6/13 15:52 版本:V1.0 开发板:SC3817R SDK:tina v3.0 1.01原始编译全志r1 ...

  7. Ubuntu20.04linux内核(5.4.0版本)编译准备与实现过程-编译过程(2)

    前面因为博客园维修,所以内核编译过程一直没有发出来,现在把整个内核过程分享出来.本随笔给出内核的编译实现过程,在编译前需要参照我前面一篇随笔: Ubuntu20.04linux内核(5.4.0版本)编 ...

  8. arm-linux内核编译过程小结

    记在前面的杂七杂八 内核的生成,实际上最终的目的是生成一个binary文件zImage,大小2-5MB的数量级. 用户可以从kernel.org得到的tar.gz格式的内核源代码,此代码解压后,就会生 ...

  9. 【内核】linux2.6版本内核编译配置选项(二)

    目录 Linux2.6版本内核编译配置选项(一):http://infohacker.blog.51cto.com/6751239/1203633 Linux2.6版本内核编译配置选项(二):http ...

随机推荐

  1. Unity 通过Animation实现控件位置的转换

    Unity版本:4.5.1 NGUI版本:3.6.5 参考链接:http://blog.csdn.net/unity3d_xyz/article/details/23035521,作者:CSDN in ...

  2. LA 4726 再看斜率优化

    感觉最近一批解题报告没写,现在慢慢补吧,算是noip前攒攒rp了 首先感到深深的自责,因为之前对斜率优化没有深入的理解,只是记住了一般步骤,并没有完全了解为什么这样做 先就这道题目而言 首先这种序列题 ...

  3. 字符串(扩展KMP):HDU 4333 Revolving Digits

    Revolving Digits Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. 字符串(后缀数组||SAM):NOI2015 品酒大会

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAByIAAALuCAIAAABtq0bwAAAgAElEQVR4nOy9f2wb150vev4boESeln ...

  5. 【转】Linux 套接字编程中的 5 个隐患

    地址:请点击这里

  6. Cyclic Nacklace - HDU 3746(next求循环节)

    题目大意:给你一些串,问如果想让这个串里面的循环节至少循环两次,需要添加几个字符(只能在最前面或者最后面添加).比如ababc 需要添加5个就是添加ababc. 分析:其实字符串的长度len-next ...

  7. IntelliJ IDEA安装 一些配置

    idea 配置修改 本篇 参考https://blog.liyang.io/234.html. 1.修改IDEA菜单的字体大小: 单击File | Project Structure菜单项,打开Pro ...

  8. winform timespan 两个时间的间隔(差) 分类: WinForm 2014-04-15 10:14 419人阅读 评论(0) 收藏

    TimeSpan 结构  表示一个时间间隔. 先举一个小例子:(计算两个日期相差的天数) 代码如下: DateTime dt = DateTime.Now.ToShortDateString(yyyy ...

  9. today's learning of english 1

    1.curriculum    必修课 主修课 2.sought       seek的过去式 3.blessed with a wonderful marriage   有个幸福美满的婚姻 4.al ...

  10. jquery ajaxform上传文件返回不提示信息的问题

    在使用jquery的ajaxform插件进行ajax提交表单并且上传文件的时候,返回类型datatype :json但是后台通过写出一个json对象后,在执行完以后没有进入success函数,而是直接 ...