cm11for xt897(motorola pthoton q) 编译记录

本文详细介绍了在Ubuntu 14.04 64位环境下,使用自定义脚本解决Moto MSM8960设备编译CyanogenMod 14.1过程中遇到的网络速度问题,包括脚本功能、安装依赖、编译流程优化等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


主机:Ubuntu14.04 64bit


首先是下载.

解压出来之后是个.repo 文件夹.

此时应该执行 repo sync 同步检验完成就可以了.

但是我在学校时试了好多次都没下载成.以为是网速问题,回到家有宽带还是不行.直到看到个网友做了个脚本:

#!/bin/bash

# FIXME: 只允许同时一个repo运行

kill_prog() {
# 用ps找出所有的repo, 然后kill掉
PID=`ps aux |grep python|grep [r]epo |awk '{print $2}'`
[[ -n $PID ]] && kill $PID
}

start_sync() {
repo sync &
}

restart_sync() {
kill_prog
start_sync
}

# 如果网络流量在retry_delay时间内小于min_speed, 则认为repo sync已经卡住了

min_speed="50"
retry_delay=600
((counter=0))
((n_retries=0))

restart_sync


while [[ 1 ]]; do
# 用ifstat检测网速
speed=`ifstat 1 1 | tail -n 1 | awk '{print $1}'`
result=$(echo "$speed < $min_speed" | bc)
if [[ $result == "1" ]]; then
((counter++))
else
((counter=0))
fi
if ((counter > retry_delay)); then
((counter=0))
echo "netspeed low. restart!"
((n_retries++))
restart_sync
fi
done

echo "completed with $n_retries retries"

需要先apt-get install ifstat 软件


下载完成后先按官方教程build一遍.

首先先把自己平时用的交叉编译链从PATH删掉,避免冲突. 

PATH变量里有sdk 

如果遇到breakfast xt897 时找不到device xt897

把下面几个git clone 到 device/motorola/目录下

https://github.com/CyanogenMod/android_device_motorola_qcom-common

https://github.com/CyanogenMod/android_device_motorola_moto_msm8960

https://github.com/CyanogenMod/android_device_motorola_xt897


 编译时提示缺少库.查看xt897 目录下extract-files.sh 文件,发现最终调用到了 device/motorola/qcom-common/extract-files.sh 脚本.

看注释可以知道这是moto msm8960 芯片系列产品通用的脚本,而且setup-makefiles.sh 没有调用成功.

补丁如下

diff extract-files.sh extract-files.sh.bak 
58c58
< export COMMON_DEVICE=qcom-common
---
> #export COMMON_DEVICE=qcom-common

还有60行

COMMON_BASE=../../../vendor/$VENDOR/$COMMON_DEVICE/proprietary

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

问题:external/iproute2/tc/q_prio.c:60:8: error: 'struct tc_prio_qopt' has no member named 'enable_flow'
external/iproute2/tc/q_prio.c:64:8: error: 'struct tc_prio_qopt' has no member named 'enable_flow'
答:cd vendor/cm
./get-prebuilts

...
还遇到过空间不够,内存不够等问题.这些网上比较好找就不贴了

重新执行 extract-files.sh 脚本,很多库无法adb pull出来.

连本机都没有的库说明根本没有用到嘛. 于是在common-proprietary-files.txt 里注释掉就好了.


其实整个编译过程对不熟悉的人看着是非常头疼的.那些编译脚本跳来跳去 而且不像Makefile那样有 Enter ... directory  ; leving xx directory 等提示.

好在错误不多 .而且每个文件夹都有个 *.mk 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值