2. 开发环境搭建:Ubuntu系统配置、CMake与GCC工具链、Adaptive AUTOSAR SDK安装与验证
说实话,很多初学者在Adaptive AUTOSAR上栽跟头,不是因为概念多难,而是环境没搭好。我见过太多人花了一周时间折腾SDK安装,最后发现是GCC版本不对。这一章,咱们就把这些坑一个个填平。
2.1 Ubuntu系统基础配置
我个人习惯用Ubuntu 20.04 LTS做开发。为什么?因为Adaptive AUTOSAR官方SDK对这个版本支持最好。你非要用22.04也行,但有些依赖包得自己编译,麻烦。
2.1.1 系统更新与基础依赖
装好系统后,第一件事就是更新源。别跳过这步,我遇到过因为源太旧导致CMake找不到最新模块的情况。
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential cmake git wget curl \
python3 python3-pip python3-venv \
libssl-dev libcurl4-openssl-dev \
libxml2-dev libyaml-dev \
doxygen graphviz
2.1.2 配置国内镜像源(可选)
如果你在国内,建议换阿里云或清华的源。不然下载SDK那几GB文件,能等到你怀疑人生。
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update
2.2 CMake与GCC工具链
Adaptive AUTOSAR的构建系统基于CMake,编译器用GCC。这两样东西的版本必须匹配,否则编译报错会让你崩溃。
2.2.1 GCC版本选择
官方推荐GCC 9.3或10.2。我试过GCC 11,编译通过了,但运行时出了个诡异的段错误,查了两天才发现是ABI不兼容。嗯,从那以后我再也不敢用非推荐版本了。
| GCC版本 | 与SDK兼容性 | 我的评价 |
|---|---|---|
| 9.3 | 完全兼容 | 最稳,推荐 |
| 10.2 | 完全兼容 | 也可以,但注意libstdc++版本 |
| 11.x | 部分兼容 | 踩过坑,不推荐 |
| 12.x | 不兼容 | 别试,浪费时间 |
# 安装GCC 9.3
sudo apt install -y gcc-9 g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90
2.2.2 CMake版本要求
Adaptive AUTOSAR SDK要求CMake 3.16以上。Ubuntu 20.04自带的CMake是3.16.3,刚好够用。如果你用旧版本,得手动升级。
# 查看当前版本
cmake --version
# 如果需要升级到3.20+
wget https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-linux-x86_64.tar.gz
tar -xzf cmake-3.20.5-linux-x86_64.tar.gz
sudo mv cmake-3.20.5-linux-x86_64 /opt/cmake
sudo ln -sf /opt/cmake/bin/cmake /usr/local/bin/cmake
2.3 Adaptive AUTOSAR SDK安装
市面上主流的SDK有Vector、EB、KPIT等。咱们以开源的 Adaptive AUTOSAR SDK (AASDK) 为例,它是GENIVI社区维护的版本,适合学习。
2.3.1 获取SDK
你可以从GitHub或官方站点下载。我个人建议用Git克隆,方便后续更新。
mkdir -p ~/adaptive_autosar_workspace
cd ~/adaptive_autosar_workspace
git clone https://github.com/GENIVI/adaptive-autosar-sdk.git
cd adaptive-autosar-sdk
这里有个坑:SDK体积大概1.2GB,包含了很多子模块。记得加 --recurse-submodules 参数,不然编译时会报头文件缺失。
git clone --recurse-submodules https://github.com/GENIVI/adaptive-autosar-sdk.git
2.3.2 目录结构说明
我第一次打开SDK目录时也懵了,文件夹太多。其实核心就这几个:
| 目录 | 作用 |
|---|---|
ara/ |
AUTOSAR Runtime for Adaptive 核心库 |
manifest/ |
应用清单文件,定义服务接口 |
platform/ |
平台抽象层,适配不同硬件 |
examples/ |
示例代码,学习入口 |
cmake/ |
CMake模块,定义编译规则 |
2.3.3 编译SDK
SDK本身需要先编译一次,生成静态库和头文件。后面你的应用程序链接这些库就行。
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/adaptive-autosar
make -j$(nproc)
sudo make install
关键点:-DCMAKE_INSTALL_PREFIX 指定安装路径。我习惯装到 /opt/adaptive-autosar,这样多个项目可以共用。
2.4 验证安装
装完别急着写代码,先跑个验证。SDK里自带了一个 HelloWorld 示例,咱们用它来确认环境没问题。
2.4.1 编译示例程序
cd ~/adaptive_autosar_workspace/adaptive-autosar-sdk/examples/HelloWorld
mkdir build && cd build
cmake .. -DCMAKE_PREFIX_PATH=/opt/adaptive-autosar
make
如果编译通过,你会看到生成了 HelloWorld 可执行文件。运行它:
./HelloWorld
输出应该是:
[INFO] Adaptive AUTOSAR HelloWorld Application
[INFO] Initializing...
[INFO] Running...
[INFO] Hello, Adaptive AUTOSAR!
[INFO] Shutting down...
看到这行输出,说明你的环境搭好了。
2.4.2 常见问题排查
如果编译报错,别慌。我列几个最常见的:
- 找不到
ara/core头文件:检查CMAKE_PREFIX_PATH是否指向正确的安装目录。 - 链接错误:undefined reference:多半是GCC版本不对,换回9.3试试。
- 运行时 segfault:检查
LD_LIBRARY_PATH是否包含/opt/adaptive-autosar/lib。
我的调试技巧:在CMakeLists.txt里加一行 set(CMAKE_VERBOSE_MAKEFILE ON),能看到完整的编译命令,方便定位问题。
2.5 知识体系总览
下面这张图总结了本章的核心逻辑。你搭建环境时,可以对照着检查每一步。
2.6 环境验证清单
最后,给你一个自检清单。每完成一项就打勾,确保万无一失。
- Ubuntu系统:版本20.04,已更新源,已安装build-essential。
- GCC:版本9.3,通过
gcc --version确认。 - CMake:版本3.16+,通过
cmake --version确认。 - SDK:已克隆到本地,编译安装到
/opt/adaptive-autosar。 - HelloWorld:编译通过,运行输出正确。
一句话总结:环境搭建的核心就三步——装好Ubuntu、配好GCC和CMake、编译安装SDK。每一步都有坑,但按本章的步骤走,半小时内搞定。