4、基础软件包安装:Git、Repo、Python3、Make、GCC等工具安装
好,咱们接着往下走。上一章我们把 Ubuntu 系统跑起来了,现在桌面干干净净的,像个毛坯房。这一章我们要干的事,就是往这个毛坯房里装「水电煤」——也就是那些开发必备的基础工具。
你想想看,MTK8676 的源码有多大?少说几十个 G,里面成千上万个文件。没有版本管理工具,你根本玩不转。所以 Git 和 Repo 是第一个要装的。另外编译系统离不开 Make,代码解析离不开 Python3,链接器离不开 GCC。这些工具就像厨师的刀、案板、灶台,缺一个你都做不了菜。
我个人习惯是先把这些基础包一股脑装好,省得后面编译到一半突然报错说缺这个缺那个,那才叫崩溃。我在项目中遇到过好几次,就是因为少装了一个 lib 库,排查了半天,最后发现是环境没配全。嗯,咱们别走那个弯路。
4.1 安装 Git 和 Repo
先说 Git。Git 是版本管理的基石,MTK 的源码仓库也是基于 Git 管理的。安装很简单,一条命令搞定:
sudo apt update
sudo apt install git -y
装完之后验证一下:
git --version
能看到版本号就说明装好了。我个人习惯装完顺手配一下全局用户名和邮箱,不然 commit 的时候会报错:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
接下来说 Repo。Repo 是 Google 为 Android 和大型项目开发的仓库管理工具,说白了就是帮你同时管理几十个 Git 仓库的「管家」。MTK8676 的源码就是通过 Repo 来拉取的。
安装 Repo 稍微特殊一点,它不是 apt 包,需要手动下载脚本:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
然后把 ~/bin 加到 PATH 里:
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
验证一下:
repo --version
4.2 安装 Python3
Python3 在 MTK 开发中扮演的角色很关键。编译脚本、工具链、甚至一些测试用例都是用 Python 写的。Ubuntu 22.04 默认带了 Python3,但版本可能不是最新的。我建议你装 3.8 以上版本,稳妥一点。
sudo apt install python3 python3-pip -y
检查版本:
python3 --version
这里有个坑要注意。有些系统里同时存在 Python2 和 Python3,默认的 python 命令可能指向 Python2。我建议你做个软链接,让 python 直接指向 python3:
sudo ln -s /usr/bin/python3 /usr/bin/python
为什么要这么做?因为 MTK 的某些编译脚本里写的是 #!/usr/bin/env python,如果你不配好,它会去找 Python2,然后报语法错误。嗯,这个坑我踩过,说出来都是泪。
4.3 安装 Make 和 GCC
Make 是构建系统的核心。MTK8676 的源码编译依赖 GNU Make,版本建议 4.0 以上。安装命令:
sudo apt install make -y
验证:
make --version
GCC 是 C/C++ 的编译器。虽然 MTK 的交叉编译工具链是单独提供的(后面章节会讲),但宿主机上也需要一个本地 GCC,用来编译一些辅助工具。
sudo apt install gcc g++ -y
验证:
gcc --version
4.4 其他辅助工具
除了上面几个核心工具,还有一些辅助包建议一起装上。这些包在编译过程中可能会被用到,提前装好省得后面报错:
sudo apt install curl wget vim openssh-server net-tools -y
解释一下:
- curl / wget:下载文件用,比如拉取 Repo 脚本、下载工具链
- vim:文本编辑器,改配置文件方便
- openssh-server:远程登录用,方便你在服务器上开发
- net-tools:包含 ifconfig 等网络工具,排查网络问题用
另外,如果你打算用 64 位系统编译 32 位的代码,还需要装一些 32 位兼容库:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386 -y
为什么要装这个?MTK8676 的某些预编译工具链是 32 位的,在 64 位系统上跑不起来。我记得第一次编译时,报了个 No such file or directory 的错误,我还以为是文件损坏了,后来才发现是缺 32 位库。你想想看,排查这种问题多浪费时间。
4.5 验证环境是否就绪
装完所有工具后,我习惯写一个简单的检查脚本,确认环境没问题:
echo "=== 环境检查 ==="
echo "Git: $(git --version)"
echo "Repo: $(repo --version 2>&1 | head -1)"
echo "Python3: $(python3 --version)"
echo "Make: $(make --version | head -1)"
echo "GCC: $(gcc --version | head -1)"
如果每个工具都能正常输出版本号,恭喜你,基础环境搭建完成了。接下来我们就可以去拉取 MTK8676 的源码了。
- Git 和 Repo 是源码管理的基础,Repo 需要手动下载脚本
- Python3 建议做软链接,避免编译脚本找不到解释器
- GCC 版本不要追新,稳定第一
- 32 位兼容库提前装好,避免编译时踩坑
好,这一章就到这儿。工具装好了,下一章我们正式开始拉取 MTK8676 的源码,那才是真正的重头戏。