3、开发环境搭建:Ubuntu环境配置、源码下载、交叉编译工具链安装、ADB调试
好,咱们正式开始动手了。这一章,说白了就是给你的电脑“武装”起来。没有趁手的工具,再牛的技术也施展不开。我个人习惯把环境搭建分成四步走:系统准备、源码获取、编译链安装、调试连接。每一步都有坑,我踩过的坑,你就不用再踩了。
3.1 Ubuntu环境配置
高通8155的开发,我强烈建议用 Ubuntu 20.04 LTS 或 22.04 LTS。为什么?因为高通官方提供的SDK和工具链,在这两个版本上验证得最充分。我之前试过用18.04,结果编译到一半报了一堆库版本冲突,折腾了两天才搞定,得不偿失。
安装完系统后,第一件事是换源。国内网络环境你懂的,不换源下载速度会让你怀疑人生。我个人习惯用清华源或阿里云源,速度稳定。
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换为清华源(以Ubuntu 22.04为例)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
# 更新
sudo apt update && sudo apt upgrade -y
接下来安装必要的依赖包。嗯,这里要注意,高通8155的编译环境对32位库有依赖,很多新手会漏掉。
sudo apt install -y git-core gnupg flex bison build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev \
libgl1-mesa-dev libxml2-utils xsltproc unzip python3 python3-pip
dpkg --add-architecture i386 && apt update,确保32位库能正常工作。我曾经因为漏了这一步,编译出来的镜像在8155上跑不起来,查了一整天。
3.2 源码下载
源码下载这块,不同厂商的8155方案略有差异。但大体上,高通会提供一个 CAF (Code Aurora Forum) 的仓库地址。你拿到的是车厂或Tier1提供的SDK包,里面通常包含一个 repo 工具和对应的 manifest.xml。
我个人习惯把源码放在 ~/qcom_8155/ 目录下,方便管理。
# 创建目录
mkdir -p ~/qcom_8155
cd ~/qcom_8155
# 初始化repo(假设你已有manifest文件)
repo init -u <你的manifest仓库地址> -b <分支名> -m <manifest文件名>
# 同步源码(这步很慢,建议用 -j4 或 -j8)
repo sync -j8
这里有个坑:网络不稳定时,repo sync容易中断。我建议写个循环脚本,断了自动重试。
#!/bin/bash
# 自动重试脚本
while true; do
repo sync -j8
if [ $? -eq 0 ]; then
echo "同步完成!"
break
fi
echo "同步中断,5秒后重试..."
sleep 5
done
.repo/manifest.xml 文件,确认所有仓库都正确拉取。我遇到过某个驱动仓库没拉下来,编译到一半才报错,非常浪费时间。
3.3 交叉编译工具链安装
交叉编译工具链,说白了就是一套在PC上生成8155能运行代码的工具。高通8155是ARM64架构,所以我们需要 aarch64-linux-android- 或 aarch64-linux-gnu- 系列的工具链。
高通SDK里通常会自带工具链,路径一般在 prebuilts/gcc/linux-x86/aarch64/ 下。但如果你需要自己安装,我推荐用 Linaro 的版本,稳定可靠。
# 下载Linaro工具链(以7.5版本为例)
wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
# 解压到指定目录
tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz -C ~/qcom_8155/toolchain/
# 配置环境变量(建议写入 ~/.bashrc)
export PATH=$PATH:~/qcom_8155/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64
undefined reference。说白了,版本不对,神仙难救。
验证工具链是否安装成功:
aarch64-linux-gnu-gcc --version
# 输出类似:gcc-linaro-7.5.0-2019.12
3.4 ADB调试
ADB(Android Debug Bridge)是我们和8155板子沟通的桥梁。高通8155虽然跑的是Android系统,但ADB的用法和普通手机完全一样。
安装ADB很简单:
sudo apt install -y adb fastboot
但这里有个关键点:8155的ADB驱动和权限配置。很多开发板需要手动添加USB Vendor ID。高通8155的VID通常是 05c6(高通官方)或 18d1(Google)。
# 创建udev规则
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-android.rules
# 重新加载规则
sudo udevadm control --reload-rules
sudo udevadm trigger
连接板子后,用 adb devices 检查:
adb devices
# 正常输出:
# List of devices attached
# 1234567890abcdef device
unauthorized,说明板子上没有授权。你需要通过屏幕或串口确认授权。我曾经在调试时,板子没有接显示屏,ADB一直 unauthorized,最后发现是板子默认关闭了USB调试,得通过串口打开。
ADB的常用调试命令,我列个表,方便你查阅:
| 命令 | 用途 | 我的经验 |
|---|---|---|
adb shell |
进入板子的shell | 最常用,没有之一 |
adb logcat |
查看系统日志 | 加 -b all 能看到更全的日志 |
adb push/pull |
文件传输 | 调试动态库时,push比重新刷机快得多 |
adb reboot |
重启板子 | 配合 adb wait-for-device 写脚本 |
adb root |
获取root权限 | 有些板子需要先 adb disable-verity |
最后,我建议你写一个 环境检查脚本,每次开始工作前跑一遍,确保所有工具都就绪:
#!/bin/bash
echo "=== 环境检查 ==="
echo "1. 检查工具链..."
aarch64-linux-gnu-gcc --version || echo "工具链未安装!"
echo "2. 检查ADB..."
adb version || echo "ADB未安装!"
echo "3. 检查源码..."
ls ~/qcom_8155/ | head -5 || echo "源码目录为空!"
echo "=== 检查完成 ==="
嗯,环境搭建这部分就到这里。说白了,这一步虽然繁琐,但基础打好了,后面编译、调试才会顺风顺水。下一章,我们开始真正接触8155的多屏显示架构。