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
小提示: 如果你在的公司网络访问 Google 的域名比较慢,可以用国内的镜像源。我曾经帮一个同事排查,他卡在 repo init 这一步半天,最后发现是网络问题。换成清华的镜像就好了。

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
注意: 不要装太新的 GCC 版本。比如 GCC 13 在某些场景下会有兼容性问题。我个人建议用 Ubuntu 22.04 自带的 GCC 11,稳定可靠。我曾经试过升级到 GCC 12,结果编译某个库时报了奇怪的链接错误,折腾了一下午才回退。

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 的源码,那才是真正的重头戏。