全志A10_linux3.0内核编译记录
第一次尝试编译时按照 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内核编译记录的更多相关文章
- ubuntu12.04 内核编译 记录
近期学习linux这门课,做实验要编译系统内核,然后..五一没事就捣鼓了一上午,还好成功了,以下就写下过程吧. 注意:以下过程的有些make 这类的命令 可能要获取权限 1.開始时能够查一下自己如今系 ...
- android5.0 aosp编译记录(由于机器硬件原因,改为4.4.2编译通过)
编译环境必须是64位系统啊,妥妥的又装了64位的ubuntu,虚拟机推荐server版本,不带x省性能…… 接着要装openjdk 1.7,记得更新一下系统的源,下面这个不错 deb http://m ...
- 在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程
实验环境:Ubnuntu 64位(推荐使用14.04)+Xshell 阿里云现在提供的云服务器很好用的,用来编译内核性能也不错.本文介绍最基本的内核编译方法,为了方便,所有操作均在root用户下进行. ...
- [原创]Nexus5 内核编译烧录过程记录
参考Android系统源代码情况分析第二章进行实践,为了提高效率,也为了增加实践机会,使用Nexus5进行内核编译.需要说明的是,Android源代码工程默认是不包含它所使用的Linux内核源码,如果 ...
- 009全志R16平台tinav3.0下编译不过的问题
009全志R16平台tinav3.0下编译不过的问题 2018/11/13 11:39 版本:V1.0 开发板:SC3817R SDK:tina v3.0 1.01原始编译全志r16平台tinav3. ...
- 全志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 ...
- Ubuntu20.04linux内核(5.4.0版本)编译准备与实现过程-编译过程(2)
前面因为博客园维修,所以内核编译过程一直没有发出来,现在把整个内核过程分享出来.本随笔给出内核的编译实现过程,在编译前需要参照我前面一篇随笔: Ubuntu20.04linux内核(5.4.0版本)编 ...
- arm-linux内核编译过程小结
记在前面的杂七杂八 内核的生成,实际上最终的目的是生成一个binary文件zImage,大小2-5MB的数量级. 用户可以从kernel.org得到的tar.gz格式的内核源代码,此代码解压后,就会生 ...
- 【内核】linux2.6版本内核编译配置选项(二)
目录 Linux2.6版本内核编译配置选项(一):http://infohacker.blog.51cto.com/6751239/1203633 Linux2.6版本内核编译配置选项(二):http ...
随机推荐
- 字符串(广义后缀自动机):BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡
3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 843 Solved: 510[Submit][St ...
- 图论:(Code Forces) Graph and String
Graph and String time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- html5---webworker多线程
javascript本身就是一个单线程的语言,一开始它的出现是为了简单的网页设计,设计者并没有考虑到多线程的问题,要知道,线程的开销是非常昂贵的.但是随着web开发的潮流化,javascript不是仅 ...
- 深度优先搜索DFS
使用递归(隐式地使用栈) 时间代价O(E+V) 输入:图G.起点start(int) 算法过程DFS(G, start) 1. 访问start节点,color[start]=visited 2. p ...
- 阿里巴巴算法工程师四面(三轮技术+hr面)详细面经
阿里面试总结: 一遍一遍地刷阿里网站,今天发现“面试中”变成“待跟进offer”了,写个面经攒人品,希望offer通知邮件早点来吧. 我当时投简历时投了C/C++工程师,其实也没经过啥考虑,因为我一开 ...
- 使用MyEclipse实现简单的Servlet程序
1. 创建一个继承于GenericServlet的类 3. 重写Server方法 package cn.school; import java.io.IOException; import javax ...
- FC和SCSI
IDE(Integrated Drive Electronics)即"电子集成驱动器",它的本意是指把"硬盘控制器"与"盘体"集成在一起的硬 ...
- CF 295E Yaroslav and Points(Splay)
题目大意: 两个操作 1 id op 把id的位置+op 2 id op 查询在[id.op]之间的全部的数的差 思路: 关键是pushup函数. 自己退一下会发现.跟区间的总和,区间的节点个数有 ...
- mysql源码分析
http://blog.csdn.net/u012935160/article/category/2697485
- C++学习路线
已经确定做C++后台的工作了,因此,要对C++要越来越熟悉才行,今天,在此列出学习和温习C++书籍的顺序,从而由浅入深地学习C++. 1. <C++ primer> 2. <Acce ...