Samsung x210 Android makefile 的一些配置实例问题
1 驱动移植找不的编译时候的产品定义:TARGET_PRODUCT
起因:
编译驱动模块时候,出现错误:system/wlan/atheros/AR6kSDK.build_3.1_RC.734/host/Android.mk:89: *** define your kernel path here for ATH_LINUXPATH. Stop.
分析:
添加驱动模块的时候,每个编译的驱动模块里面的驱动文件夹里面的都应该有Android.mk 这个make 文件。
在AR6KSDK里面的host 文件夹下,就有这个文件,编译的时候,出现过问题,找不的TARGET_PRODUCT 的定义
·解决》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
根据Android的编译结构,一点点剥离,找到如下:理由是:
整个 Build 系统中的 Make 文件可以分为三类:
第一类是 Build 系统核心文件,此类文件定义了整个 Build 系统的框架,而其他所有 Make 文件都是在这个框架的基础上编写出来的。
图 1 是 Android 源码树的目录结构,Build 系统核心文件全部位于 /build/core(本文所提到的所有路径都是以 Android 源码树作为背景的,“/”指的是源码树的根目录,与文件系统无关)目录下。
第二类是针对某个产品(一个产品可能是某个型号的手机或者平板电脑)的 Make 文件,这些文件通常位于 device 目录下,该目录下又以公司名以及产品名分为两级目录,图 2 是 device 目录下子目录的结构。
第三类是针对某个模块(关于模块后文会详细讨论)的 Make 文件。整个系统中,包含了大量的模块,每个模块都有一个专门的 Make 文件,这类文件的名称统一为“Android.mk”
根据上面的理由,目标板级别的配置应该是第二条配置,
检查
~/x210_ics_rtm_v13/device/samsung/x210/AndroidProducts.mk
有指向这个文件
PRODUCT_MAKEFILES := $(LOCAL_DIR)/full_x210.mk
再查看这个文件
~/x210_ics_rtm_v13/device/samsung/x210$ vim full_x210.mk
....
# Overrides
PRODUCT_NAME := full_x210
PRODUCT_DEVICE := x210
PODUCT_BRAND := Android
1PRODUCT_MODEL := Android On X210
在“Android.mk”加打印看看到底配置如何:
$(warning $(TARGET_PRODUCT))
然后再编译一下:
system/wlan/atheros/AR6kSDK.build_3.1_RC.734/host/Android.mk:39: full_x210
system/wlan/atheros/AR6kSDK.build_3.1_RC.734/host/Android.mk:89: *** define your kernel path here for ATH_LINUXPATH. Stop.
结论:
TARGET_PRODUCT 和 PRODUCT_NAME 具有同样的名字
修改:
修改\system\wlan\atheros\AR6kSDK.build_3.1_RC.734\host\Android.mk 下的 android.mk
ifeq ($(TARGET_PRODUCT),$(filter $(TARGET_PRODUCT),qsd8250_surf qsd8250_ffa msm7627_surf msm7627_ffa msm7627a msm7625_ffa msm7625_surf msm7630_surf full_x210))
#export ATH_LINUXPATH=$(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
#ATH_CROSS_COMPILE_TYPE:=$(ATH_ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-
ATH_CROSS_COMPILE_TYPE := /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
ATH_LINUXPATH :=/home/hanson//x210_ics_rtm_v13/kernel
问题解决:
再编译通过。。。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考:
http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/
Samsung x210 Android makefile 的一些配置实例问题相关推荐
- Android开发环境简单配置
为什么80%的码农都做不了架构师?>>> · Android开发环境简单配置 写这个系列的原因也是因为自己对android比较感兴趣,而网上多数教程都是直接参照 ...
- Android驱动开发之Hello实例(基于高通msm8909)
点击打开链接 Android驱动开发之Hello实例: 驱动部分 modified: kernel/arch/arm/configs/msm8909-1gb_w100_hd720p-perf_de ...
- Android驱动开发之Hello实例
Android驱动开发之Hello实例: 驱动部分 modified: kernel/arch/arm/configs/msm8909-1gb_w100_hd720p-perf_defconfig ...
- android代码删除wifi,Android Wifi的forget()操作实例详解_Android_脚本之家
Android Wifi的forget()操作实例详解 我们在处理某个Wifi连接时,有时会需要忘掉当前连接的密码信息.执行这项操作,我们需要调用WifiManager::forget()函数: / ...
- Deepin Linux上的Android+Flutter开发环境配置
Deepin Linux上的Android+Flutter开发环境配置 在Linux上安装Flutter开发环境,官方教程参见Flutter Get Started,中国用户被墙需额外注意的官方教程参 ...
- android混淆教程,Android 实现代码混淆的实例
Android 实现代码混淆的实例 1.简介 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为. 混淆的目的是为了加大反 ...
- Android makefile文件解析
Android makefile文件解析 Android编译过程详解 编译步骤 Android的编译步骤包括三步: 1.通过source build/envsetup.sh命令将sh文件中的命令加载到 ...
- log4j2配置实例[按小时记录日志文件]
log4j2.xml文件配置实例:<?xml version="1.0" encoding="UTF-8"?> <configuration ...
- Mac下Android studio 之NDK配置教程(一)
Mac下Android studio 之NDK配置教程(一) 1.概述 近期项目全线转移到Mac下使用使用Android studio开发. 遇到关键代码封装到 ***native***层,此时在wi ...
最新文章
- Geth的命令行介绍
- 面试题: Vue中的 computed 和 watch的区别
- 如何限制某些用户发送Internet邮件
- SpringBoot 自定义Kafka消息序列化和反序列化
- JavaScript 数组详解
- 专业程序员必知必会的技巧:驯服复杂代码
- 【OpenCV学习】基本矩阵
- fireFox模拟 post请求、上传插件,火狐浏览器中文postman插件
- 【tyvj1520】 树的直径
- Arduino十大滤波算法程序大全(精编无错版)
- 一个精心制作的页眉样式
- 设计模式(3)——装饰者模式
- 如何用 JavaScript 控制 Arduino?
- 批量更改PPT文件中的内容(修改大量PPT)
- 物联网无线传输技术有哪些?
- html5怎么给图片加边框,怎么给图片加边框
【解决模式】
- 计算机控制实验心得体会,车床实训心得体会(精选5篇)
- Redis学习总结和相关资料
- 强制推到远程git push
- react-dom.development.js:6202 Unable to preventDefault inside passive event listener invocation 错误