2. 开发环境搭建:Ubuntu虚拟机安装、必备工具链、AOSP基础环境配置、Git版本管理
说实话,很多初学者在AUTOSAR Adaptive平台上一开始就卡住了。不是代码看不懂,而是环境没搭好。我见过太多人花了两三天装环境,结果编译第一个示例就报错。所以这一章,咱们把地基打牢。
我个人习惯用Ubuntu 20.04 LTS作为开发系统。为什么选它?因为AOSP官方和AUTOSAR Adaptive的参考实现,大多在这个版本上验证过。你非要用22.04也行,但有些依赖包的版本会变,到时候踩坑别怪我没提醒你。
2.1 安装Ubuntu虚拟机
如果你用的是Windows,别直接在物理机上装双系统。用虚拟机,快照功能太香了。我每次做重大配置变更前,都会打个快照。万一搞崩了,三秒钟恢复。
推荐工具:VMware Workstation Pro 或 VirtualBox。我个人偏向VMware,性能损耗小,而且和WSL2的兼容性更好。
安装步骤其实很简单,但有几个关键点要注意:
- 内存分配: 至少8GB,建议16GB。编译AOSP或Adaptive平台时,内存不够直接OOM。
- 磁盘空间: 至少80GB,建议120GB。AOSP源码拉下来就30多GB,编译产物再翻一倍。
- CPU核心: 至少4核,越多越好。编译是并行任务,核心数直接决定你等多久。
- 网络模式: 选NAT模式,方便共享主机的网络连接。
2.2 必备工具链安装
环境搭好之后,第一件事就是装工具链。别急着拉代码,先把这些基础工具装好。
2.2.1 CMake
CMake是AUTOSAR Adaptive平台的标准构建系统。说白了,它负责生成Makefile,然后让GCC去编译。
安装命令很简单:
sudo apt update
sudo apt install cmake
cmake --version # 验证安装,版本需 ≥ 3.16
我曾经在某个项目里用了CMake 3.10,结果死活编译不过一个AUTOSAR Adaptive的示例。查了半天,发现是CMake策略版本太旧,不支持某些新语法。所以,版本一定要够新。
2.2.2 GCC/G++
编译器这块,AUTOSAR Adaptive平台要求支持C++17。GCC 9以上都行。
sudo apt install build-essential
gcc --version
g++ --version
build-essential这个包会把GCC、G++、make、libc-dev等基础工具一次性装好。省心。
2.2.3 Python3
Python3在AUTOSAR Adaptive平台里主要用来跑脚本。比如代码生成器、测试框架、配置工具等。
sudo apt install python3 python3-pip python3-venv
python3 --version # 确保 ≥ 3.8
我建议你装一个python3-venv。为什么?因为不同项目可能依赖不同版本的Python包。用虚拟环境隔离,避免冲突。我在一个项目里同时维护三个Adaptive平台版本,全靠venv切换。
2.2.4 其他依赖
还有一些库,虽然不是AUTOSAR直接要求的,但编译过程中大概率会用到:
sudo apt install libssl-dev libcurl4-openssl-dev libjsoncpp-dev libyaml-cpp-dev
| 工具/库 | 版本要求 | 用途 |
|---|---|---|
| CMake | ≥ 3.16 | 构建系统配置 |
| GCC/G++ | ≥ 9.0 | C++17编译 |
| Python3 | ≥ 3.8 | 脚本与工具链 |
| OpenSSL | ≥ 1.1.1 | 安全通信与证书 |
| libcurl | ≥ 7.68 | HTTP/REST通信 |
2.3 AOSP基础环境配置
AUTOSAR Adaptive平台和AOSP(Android Open Source Project)有什么关系?其实,Adaptive平台的应用层通信、进程管理、日志系统,很多概念和AOSP是相通的。而且,有些AUTOSAR Adaptive的参考实现直接跑在AOSP的底层框架上。
配置AOSP基础环境,主要是为了后续能编译和运行那些基于AOSP的Adaptive平台示例。
2.3.1 安装Repo工具
Repo是Google用来管理多Git仓库的工具。AOSP源码就是由几百个Git仓库组成的。
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
2.3.2 配置Java环境
虽然AUTOSAR Adaptive平台本身不依赖Java,但AOSP的编译系统需要。我建议装OpenJDK 11。
sudo apt install openjdk-11-jdk
java -version
2.3.3 安装AOSP编译依赖
AOSP官方提供了一个脚本,可以一键安装所有依赖:
sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev \
gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev \
x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils \
xsltproc unzip fontconfig
2.4 Git版本管理
Git是每个嵌入式工程师的必修课。在AUTOSAR Adaptive平台开发中,Git更是核心工具。因为Adaptive平台的代码库通常由多个组件组成,每个组件都有自己的Git仓库。
2.4.1 基础配置
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global core.editor vim
git config --global merge.tool vimdiff
这些配置看起来简单,但很重要。我见过有人提交代码时,作者信息写的是“root”,结果CI系统直接拒绝合并。嗯,这种低级错误我也犯过。
2.4.2 分支策略
在AUTOSAR Adaptive项目中,我推荐用Git Flow或者Trunk-Based Development。我个人更倾向Trunk-Based,因为Adaptive平台迭代快,频繁合并能减少冲突。
| 策略 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Git Flow | 大型团队、多版本并行 | 分支清晰,发布可控 | 分支多,合并复杂 |
| Trunk-Based | 小团队、快速迭代 | 冲突少,集成快 | 对CI要求高 |
2.4.3 常用操作
这里列几个我在项目中每天都会用到的Git命令:
# 拉取最新代码
git pull --rebase
# 创建功能分支
git checkout -b feature/my-feature
# 提交代码
git add .
git commit -m "feat: add adaptive platform communication module"
# 合并主干
git checkout main
git merge feature/my-feature
# 查看提交历史
git log --oneline --graph --all
2.5 环境验证
所有工具装完后,咱们写一个简单的C++程序,验证整个工具链是否正常工作。
// hello_adaptive.cpp
#include <iostream>
#include <string>
int main() {
std::string msg = "Hello, AUTOSAR Adaptive!";
std::cout << msg << std::endl;
return 0;
}
# CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(HelloAdaptive)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(hello_adaptive hello_adaptive.cpp)
编译并运行:
mkdir build && cd build
cmake ..
make
./hello_adaptive
如果看到输出“Hello, AUTOSAR Adaptive!”,恭喜你,环境搭建成功。
- CMake ≥ 3.16
- GCC ≥ 9.0,支持C++17
- Python3 ≥ 3.8
- Git配置正确
- 能编译并运行C++17程序
2.6 本章知识体系
下面这张图,帮你理清本章的核心逻辑:
这张图把本章的四个核心模块串起来了。你按这个顺序走,基本不会出错。