3、开发环境搭建:Ubuntu环境配置、源码下载、交叉编译工具链安装、ADB调试

好,咱们正式开始动手了。这一章,说白了就是给你的电脑“武装”起来。没有趁手的工具,再牛的技术也施展不开。我个人习惯把环境搭建分成四步走:系统准备、源码获取、编译链安装、调试连接。每一步都有坑,我踩过的坑,你就不用再踩了。

3.1 Ubuntu环境配置

高通8155的开发,我强烈建议用 Ubuntu 20.04 LTS22.04 LTS。为什么?因为高通官方提供的SDK和工具链,在这两个版本上验证得最充分。我之前试过用18.04,结果编译到一半报了一堆库版本冲突,折腾了两天才搞定,得不偿失。

注意: 不要用Ubuntu 24.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
警告: 工具链版本一定要和SDK匹配。我见过有人用9.x版本去编译7.x的SDK,结果链接阶段报了一堆 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的多屏显示架构。