第三章 开发环境搭建:Ubuntu系统安装、交叉编译工具链配置与Repo工具使用
好,咱们直接进入正题。做MTK平台底层开发,环境搭建是第一道坎。我见过太多新手卡在这一步,折腾几天都搞不定。其实说白了,就是三板斧的事:装系统、配工具链、搞定源码管理。今天我就把这套流程掰开揉碎了讲给你听。
3.1 Ubuntu系统安装——别选错版本
我个人习惯用Ubuntu 20.04 LTS。为什么?因为MTK官方SDK对这个版本支持最好。你想想看,用18.04可能缺某些库,用22.04又可能太新导致兼容性问题。20.04刚刚好,稳得很。
安装时注意几点:
- 磁盘分区:至少留100GB空间。我刚开始做时只分了60GB,结果编译到一半磁盘满了,那叫一个尴尬。
- 交换分区:建议16GB以上。编译Bootloader时内存吃紧,交换分区就是你的救命稻草。
- 网络配置:确保能访问外网。MTK的源码包动不动就几个GB,网速太慢你会崩溃的。
我的小技巧:装完系统第一件事,换国内源。比如清华源、阿里源,下载速度能快10倍。具体操作就是改/etc/apt/sources.list,把archive.ubuntu.com替换成mirrors.tuna.tsinghua.edu.cn。
3.2 交叉编译工具链配置——GCC for ARM
交叉编译,说白了就是在x86电脑上编译出ARM能跑的程序。MTK平台用的是ARM架构,所以我们需要ARM版的GCC。
MTK官方推荐用gcc-arm-none-eabi这个工具链。安装方式很简单:
sudo apt-get update
sudo apt-get install gcc-arm-none-eabi
装完后验证一下:
arm-none-eabi-gcc --version
如果看到版本号,说明装好了。但我得提醒你,有时候apt源里的版本太旧。我在项目中遇到过一个问题:用apt装的4.9版本编译出来的Bootloader死活跑不起来,折腾了两天才发现是工具链版本不对。
避坑指南:我曾经因为工具链版本问题浪费了整整两天。建议直接从ARM官网下载最新版,或者用MTK SDK里自带的工具链。别图省事用apt装,除非你确认版本匹配。
如果你需要手动安装,步骤是这样的:
- 从ARM官网下载gcc-arm-none-eabi-xxx-linux.tar.bz2
- 解压到/opt目录:
sudo tar -xjf gcc-arm-none-eabi-xxx-linux.tar.bz2 -C /opt - 配置环境变量,编辑~/.bashrc,添加:
export PATH=$PATH:/opt/gcc-arm-none-eabi-xxx/bin - 执行
source ~/.bashrc使配置生效
嗯,这里要注意:环境变量配置完一定要source一下,不然新开的终端还是找不到命令。我刚开始学的时候经常忘记这步,然后一脸懵逼地怀疑人生。
3.3 源码管理工具Repo的使用
MTK的源码仓库用Git管理,但项目太大,有上百个Git仓库。这时候就需要Repo这个工具了。Repo是Google开发的,专门用来管理多Git仓库的项目。
安装Repo很简单:
sudo apt-get install repo
但有时候apt源里的Repo版本太旧。我建议直接从Google官方下载:
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=$PATH:~/bin
Repo的核心命令就几个,我列个表给你看:
| 命令 | 作用 | 常用参数 |
|---|---|---|
| repo init | 初始化Repo仓库 | -u 指定manifest仓库URL,-b 指定分支 |
| repo sync | 同步所有子仓库 | -c 只同步当前分支,-j4 用4个线程并行下载 |
| repo start | 创建新分支 | 后面跟分支名和项目名 |
| repo upload | 提交代码审核 | --reviewer 指定审核人 |
实际工作中,最常用的流程是这样的:
# 第一步:初始化
repo init -u https://github.com/MTK/manifest.git -b mtk8678
# 第二步:同步代码(这一步最耗时)
repo sync -c -j4
# 第三步:创建自己的开发分支
repo start my-branch --all
# 第四步:修改代码后提交
git add .
git commit -m "fix: 修复Bootloader启动时序问题"
repo upload
重点来了:repo sync时加-j参数能大幅提升速度。我一般用-j8,如果你的电脑是8核以上,可以试试-j16。但别贪心,网络带宽有限,开太多线程反而会变慢。
还有一个坑:repo init时指定的manifest仓库地址一定要对。我曾经因为拼写错误,init了一个空仓库,然后sync了半天发现啥也没下载下来。嗯,这种低级错误犯一次就够了。
3.4 环境验证——确保一切就绪
环境搭好后,我建议你做个快速验证:
- 检查Ubuntu版本:
lsb_release -a,确认是20.04 - 检查工具链:
arm-none-eabi-gcc --version,确认版本号 - 检查Repo:
repo --version,确认能正常执行 - 尝试编译一个简单的C程序:
arm-none-eabi-gcc -o test test.c
如果以上都没问题,恭喜你,开发环境搭建完成。接下来就可以正式开始Bootloader的定制移植了。
我的建议:把环境搭建的步骤写成脚本,下次重装系统时一键执行。我自己的脚本已经迭代了十几个版本,现在装环境只需要5分钟。你也应该养成这个习惯。
好了,第三章的内容就到这里。环境搭建是基础中的基础,但也是很多人容易翻车的地方。记住我说的那几个坑,能帮你省下不少时间。下一章我们开始讲Bootloader的启动流程,那才是真正精彩的部分。