首页/新闻资讯/正文详情

AFSIM 2.9.0 Ubuntu 22.04 编译指南:依赖配置与CMake实战

发布时间:2026/9/23 22:57:09 来源:云帆数科 栏目:资讯中心
AFSIM 2.9.0 Ubuntu 22.04 编译指南:依赖配置与CMake实战
简介这份PDF文档面向需要在Linux平台从源码编译AFSim仿真工具集的开发者与研究人员尤其适合具备一定命令行操作经验、希望搭建本地仿真环境的中高级用户。文档完整记录了AFSim 2.9.0在Ubuntu 22.04.4 LTS下的编译过程涵盖资源目录说明、编译环境配置、库环境变量设置、CMake配置与编译、运行测试等环节并给出gcc/g、cmake-qt-gui等工具版本及硬件配置参考。资源包共1个PDF文件大小约694KB内容紧凑、步骤清晰便于按章节对照操作。目前已有2522人学习下载。读者可据此了解源码、示例、第三方库、使用手册、辅助工具与培训资料的组织方式掌握环境变量与依赖库的配置思路并借助运行测试环节验证编译结果减少路径错误与权限问题带来的反复调试为后续仿真开发打下基础。1. 为什么 AFSIM 2.9.0 在 Ubuntu 22.04 上编译总卡在依赖环节AFSIM 是一套面向任务级仿真与体系对抗推演的工具集源码包里同时塞进了仿真内核、第三方库、示例想定和培训资料体量不小。很多人拿到源码后第一反应是直接cmake .. make结果在 configure 阶段就报找不到 tiff、gdal、osgEarth或者链接阶段提示 Qt 版本不匹配。问题不在代码而在于 AFSIM 2.9.0 的构建体系默认依赖一套预编译好的第三方库路径、库名、ABI 都是固定的你系统里装的 apt 版本对不上。这份编译指南的价值就在于把「环境变量 → 依赖安装 → CMake 配置 → make → 安装 → 运行 wizard」这条链路固定下来让编译结果可复现。它适合两类人一是第一次在 Linux 上从源码构建 AFSIM 的仿真工程师二是需要把 AFSIM 集成进自己 CI 或容器环境的运维开发。下面按实际操作顺序拆开讲重点放在路径约定、环境变量拼接和 CMake 缓存这几个最容易翻车的地方。2. AFSIM 2.9.0 编译环境与目录结构约定2.1 版本、系统与硬件基线先把基线对齐后面所有命令才有意义。AFSIM 2.9.0 官方验证过的组合是 Ubuntu 22.04.4 LTS gcc/g 4.8.5 cmake 3.22.1内存建议 16G 起步因为make -j4同时链接 osg、gdal 这类大库时峰值内存不低。CPU 和 GPU 不是编译瓶颈但后续跑三维态势想定时 RTX 3060 这类独显会舒服很多。项目推荐值说明AFSIM 版本2.9.0源码包版本不要混用其他版本操作系统Ubuntu 22.04.4 LTS官方验证基线构建工具cmake 3.22.1 cmake-qt-guiGUI 用于可视化配置缓存编译器gcc/g 4.8.5由依赖包提供非系统默认内存16G并行编译峰值需求第三方库随源码 dependencies 提供不要用 apt 版本替换提示gcc 4.8.5 是随dependencies/gcc-g.rar一起提供的不要用 Ubuntu 22.04 自带的 gcc 11 去编译否则第三方库的 ABI 会对不上链接阶段会出现大量 undefined reference。2.2 目录结构为什么必须照抄指南里反复强调「编译目录与文档保持一致」这不是强迫症。AFSIM 的 CMake 脚本里大量使用了相对路径和${AFSIM_3RDPARTY_PATH}变量一旦你把dependencies挪到别处configure 阶段就会找不到vtk、osg这些库的.cmake配置文件。标准布局如下/home/sma/AFSIMSrc/ # 根目录 ├── afsim/ # 源码目录 ├── demos/ # 官方案例 ├── dependencies/ │ ├── 3rd_party/ # 第三方库tiff/gdal/osg/qt 等 │ ├── resources/ # 编译所需 vtk 等资源 │ ├── tools.rar # 编译工具包 │ └── gcc-g.rar # C 环境资源包 ├── tools/ # 辅助工具含 python └── training/ # 培训资料如果你非要把根目录换到/opt/AFSIMSrc那就要同步改后面所有环境变量和 CMake 里的路径工作量远大于直接照抄。我一般会先mkdir -p /home/sma/AFSIMSrc再解压避免解压时多套一层目录。2.3 第三方库清单与用途dependencies/3rd_party下每个库都有明确分工理解它们能帮你在报错时快速定位tiff-4.4.0、libpng-1.6.37、libjpeg-turbo-2.1.2图像编解码地形纹理和图标加载用。gdal-3.3.2、proj-8.1.1、geos-3.5.1地理坐标转换与矢量数据处理想定里的经纬度、投影全靠它。osg-3.6.3、osgEarth-2.10.1三维渲染引擎态势显示的核心。qt-5.12.11GUI 框架wizard 和各类编辑器依赖。openssl-3.1.1、curl-8.2.0网络与加密。sqlite-3.32.3、tinyxml2-7.1.0数据存储与配置解析。ffmpeg-4.2.4、sdl-2.0.16音视频与输入设备。gtest-1.8.0单元测试。这些库的lib或lib64目录都要进LD_LIBRARY_PATH少一个都可能在运行 wizard 时报error while loading shared libraries。3. 环境变量配置与编译环境安装3.1 在 .bashrc 中拼接 LD_LIBRARY_PATH环境变量是整条链路的粘合剂。AFSIM_HOME指向源码根AFSIM_3RDPARTY_PATH指向第三方库根LD_LIBRARY_PATH则要把每个库的 lib 目录串起来。注意有的库是lib有的是lib64写错一个就白搭。su root vi ~/.bashrc # 在文件末尾追加以下内容 export AFSIM_HOME/home/sma/AFSIMSrc/afsim export AFSIM_3RDPARTY_PATH/home/sma/AFSIMSrc/dependencies/3rd_party export LD_LIBRARY_PATH${AFSIM_3RDPARTY_PATH}/tiff-4.4.0-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/sqlite-3.32.3-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/sdl-2.0.16-x64-lnx/lib64:${AFSIM_3RDPARTY_PATH}/tinyxml2-7.1.0-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/gtest-1.8.0-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/openssl-3.1.1-x64-lnx/lib64:${AFSIM_3RDPARTY_PATH}/curl-8.2.0-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/proj-8.1.1-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/geos-3.5.1-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/gdal-3.3.2-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/zlib-1.2.11-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/libpng-1.6.37-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/ffmpeg-4.2.4-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/libjpeg-turbo-2.1.2-x64-lnx/lib:${AFSIM_3RDPARTY_PATH}/osg-3.6.3-x64-lnx/lib64:${AFSIM_3RDPARTY_PATH}/osgEarth-2.10.1-x64-lnx/lib64:${AFSIM_3RDPARTY_PATH}/qt-5.12.11-x64-lnx/lib:${LD_LIBRARY_PATH}逻辑说明整条LD_LIBRARY_PATH用冒号分隔末尾保留${LD_LIBRARY_PATH}是为了不覆盖系统原有路径。参数上唯一要盯的是lib与lib64的区分——sdl、openssl、osg、osgEarth用的是lib64其余是lib。改完执行source ~/.bashrc让配置立即生效再用echo $LD_LIBRARY_PATH确认拼接结果没有多余空格或换行。注意vi里粘贴长行容易断行建议用cat ~/.bashrc EOF ... EOF的方式追加避免手动换行引入错误。3.2 执行 myenv_temp.sh 安装编译环境环境变量就位后进入dependencies目录执行官方提供的环境安装脚本。这个脚本会解压 gcc/g 资源包、设置编译器软链、补齐一些系统级依赖。cd /home/sma/AFSIMSrc/dependencies chmod x myenv_temp.sh ./myenv_temp.shchmod x是给脚本加执行权限./myenv_temp.sh在 root 下运行。脚本执行过程中如果提示缺少某个 apt 包按提示apt install补上即可。执行完成后用gcc --version确认当前生效的是 4.8.5 而不是系统默认版本这一步是后面 CMake 能否找到正确编译器的前提。3.3 验证环境是否就绪在正式 CMake 之前先做三项快速检查能省掉后面大量返工# 1. 检查环境变量 echo $AFSIM_HOME echo $AFSIM_3RDPARTY_PATH # 2. 检查编译器版本 gcc --version | head -1 g --version | head -1 # 3. 检查关键库能否被动态链接器找到 ldconfig -p | grep -E libgdal|libosg|libQt5Core如果第 3 步查不到库说明LD_LIBRARY_PATH没生效或路径写错回到 3.1 逐项核对。三项都通过再往下走否则 CMake configure 阶段必然报错。4. CMake 配置与 make 编译实战4.1 用 cmake-gui 加载缓存并配置AFSIM 的构建入口在afsim/build但配置工具用的是 Qt 版的 cmake-gui路径在第三方库的 qt bin 目录下。先给 qt bin 里的可执行文件加权限再切回普通用户启动 GUI。cd /home/sma/AFSIMSrc/dependencies/3rd_party/qt-5.12.11-x64-lnx/bin chmod x ./* su sma # 切回编译用户sma 为示例用户名 sudo cmake-gui在 cmake-gui 里填两个路径Where is the source code/home/sma/AFSIMSrc/afsimWhere to build the binaries/home/sma/AFSIMSrc/afsim/build如果之前配置过缓存可能没自动加载点File | Reload Cache手动加载。然后点Configure选择生成器为Unix Makefiles。configure 过程中重点看输出里有没有Could NOT find字样尤其是 gdal、osg、Qt5 这几个。没有报错就点Generate成功后会提示Generating done此时build目录下已经生成了 Makefile。提示configure 报错时不要急着改 CMakeLists先看CMakeError.log和CMakeOutput.log九成问题出在库路径或编译器版本而不是源码本身。4.2 make -j4 并行编译与常见报错生成 Makefile 后切回 root 执行编译。-j4是并行任务数16G 内存下 4 路比较稳内存更大可以上-j8但再高收益递减且容易 OOM。su root cd /home/sma/AFSIMSrc/afsim/build make -j4编译过程会持续较长时间终端显示100%并回到命令行即表示成功。常见报错及处理报错关键字原因处理undefined reference to ...库路径或 ABI 不匹配检查 LD_LIBRARY_PATH 与 gcc 版本fatal error: QtCore/...Qt 头文件路径未进 CMake重新 configure确认 Qt5_DIRcannot find -lgdalgdal lib 目录未加入核对 3.1 中 gdal 路径virtual memory exhausted并行数过高降到-j2重试如果编译中途失败修完问题后直接重新make -j4即可已编译的目标文件不会重做这是 Makefile 增量编译的好处。4.3 make install 与资源目录补齐编译成功后执行安装把产物集中到wsf_install目录make install mkdir -p ${AFSIM_HOME}/build/wsf_install/resources/site/mil-std2525dmake install会把可执行文件、库、资源按约定布局复制到afsim/build/wsf_install。第二条mkdir是补齐 mil-std2525d 军标符号资源目录AFSIM 的态势显示会从这里读取符号定义缺了它 wizard 启动后地图上的军标可能显示异常。安装完成后wsf_install/bin下应该能看到wizard、mission等可执行文件。5. 运行验证与编译产物排错技巧5.1 启动 wizard 做冒烟测试安装完成后最直接的验证就是跑 wizard。进入 bin 目录用 root 启动cd /home/sma/AFSIMSrc/afsim/build/wsf_install/bin su root ./wizardwizard 是 AFSIM 的图形化入口能正常弹出界面并加载默认想定说明编译链路整体通了。如果启动时报error while loading shared libraries: libQt5Core.so.5说明LD_LIBRARY_PATH在 root 会话里没生效——root 的.bashrc和普通用户是分开的确认 3.1 的配置是写在 root 的~/.bashrc里。5.2 用 ldd 定位缺失的动态库wizard 启动失败时ldd是最快的诊断工具它会列出每个依赖库的解析结果ldd ./wizard | grep not found输出里凡是not found的库就是LD_LIBRARY_PATH里缺的路径。对照 3.1 的清单找到对应库目录补进去source ~/.bashrc后重试。这个技巧对mission、mystic等其他可执行文件同样适用。5.3 编译产物的目录布局与二次开发入口wsf_install的布局值得记一下做 AFSIM 二次扩展开发时经常要往里放东西wsf_install/ ├── bin/ # 可执行文件wizard、mission 等 ├── lib/ # AFSIM 自身编译出的库 ├── resources/ # 资源文件含 site/mil-std2525d ├── include/ # 对外头文件扩展开发用 └── share/ # 想定模板与配置做二次扩展时自定义插件编译出的.so一般放到lib下头文件引用include里的接口想定文件放share或demos下加载。理解这个布局后面无论是写自定义传感器模型还是接入外部数据源都能快速找到落点。5.4 一个容易被忽略的权限细节整个流程里 root 和普通用户来回切换容易在文件属主上踩坑。make install用 root 执行产物属主是 root如果后续用普通用户跑 wizard 又需要写日志或缓存就会 permission denied。常见做法是安装完成后统一改属主chown -R sma:sma /home/sma/AFSIMSrc/afsim/build/wsf_install把sma换成你的实际用户名。这样普通用户既能运行也能写运行时文件避免每次都要su root。编译阶段用 root 是为了写系统路径和装依赖运行阶段用普通用户更安全这个边界分清楚后面调试会顺很多。本文还有配套的精品资源点击获取

相关推荐

EMQX QUIC Listener 修复:TLS 握手失败时同样导出会话密钥(SSLKEYLOGFILE)
EMQX QUIC Listener 修复:TLS 握手失败时同样导出会话密钥(SSLKEYLOGFILE)

后端物联网消息队列通信 【免费下载链接】emqx The most scalable and reliable MQTT broker for AI, IoT, IIoT and connected vehicles 项目地址: https://gitcode.com/gh_mirrors/em/emqx 点击查看 免费下载 本篇技术指南围绕 EMQX 开源仓库变更记录 fix-15614.… · 2026/9/23 22:56:51

substrate 内嵌的 cloud.google.com/go/compute/metadata 全解析:Google Cloud 实例元数据服务的 Go 客户端库
substrate 内嵌的 cloud.google.com/go/compute/metadata 全解析:Google Cloud 实例元数据服务的 Go 客户端库

人工智能AI AgentAgent 沙箱云原生容器运行时零信任 【免费下载链接】substrate Agent Substrate: the core system 项目地址&#xff1a; https://gitcode.com/GitHub_Trending/substrate7/substrate 点击查看 免费下载 <导读> 本文围绕 substrate 仓库&#xff08;Age… · 2026/9/23 22:56:44

无人机辅助边缘计算卸载:DDPG源码实战与消融实验
无人机辅助边缘计算卸载:DDPG源码实战与消融实验

简介&#xff1a;本资源面向通信、边缘计算与强化学习方向的学生及研究人员&#xff0c;提供一套基于无人机辅助移动边缘计算&#xff08;UAV-MEC&#xff09;的计算卸载优化完整Python实现&#xff0c;核心采用深度确定性策略梯度&#xff08;DDPG&#xff09;算法&#xff0c… · 2026/9/23 22:56:07

Flet 中 FilledButtonTheme 主题详解:用 ButtonStyle 统一定制实心按钮外观
Flet 中 FilledButtonTheme 主题详解:用 ButtonStyle 统一定制实心按钮外观

前端跨平台桌面应用移动开发 【免费下载链接】flet Build realtime web, mobile and desktop apps in Python only. No frontend experience required. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/fl/flet 点击查看 免费下载 导读 FilledButtonTheme 是 Flet 主题… · 2026/9/23 23:28:39

深基坑SMW工法桩内支撑计算书:参数复核与手算验证要点
深基坑SMW工法桩内支撑计算书:参数复核与手算验证要点

简介&#xff1a;面向深基坑工程技术人员&#xff0c;这份文档以城市下穿隧道、地下环廊及地铁车站预留通道等复杂工况为背景&#xff0c;系统整理了SMW工法桩内支撑支护计算书&#xff0c;内容涵盖方案选型、安全等级划分与重要性系数取值。针对钱塘江淤积平原软土条件&#x… · 2026/9/23 23:28:25

Atlas 300V 24G推理加速卡实战:从ONNX到OM部署YOLOv5全流程
Atlas 300V 24G推理加速卡实战:从ONNX到OM部署YOLOv5全流程

“atlas 300v 24g 是运算加速卡吗&#xff1f;”第一次接触这块卡的时候&#xff0c;我也反复确认过这个问题。准确说&#xff0c;Atlas 300V 24G是华为昇腾AI全栈里的推理加速卡&#xff0c;不是通用GPU&#xff0c;也不是传统意义的大规模科学计算卡&#xff0c;而是专门为深… · 2026/9/23 23:28:19

基于TensorFlow和ResNet的字母数字识别完整实践
基于TensorFlow和ResNet的字母数字识别完整实践

简介&#xff1a;基于TensorFlow 2与EMNIST数据集的字母数字识别项目&#xff0c;面向课程设计、深度学习初学者和需要图像分类入门代码的开发者&#xff0c;解决手写英文字母与数字的模型训练和识别问题。该项目是ResNet在TF2上的一份简洁实现&#xff0c;运行环境为Windows 1… · 2026/9/23 23:28:11

ArduPilot固定翼参数树详解:从AHRS_ORIENTATION到AFS_失效保护配置
ArduPilot固定翼参数树详解:从AHRS_ORIENTATION到AFS_失效保护配置

简介&#xff1a;这份文档面向无人机、航模飞控调试的初学者与进阶玩家&#xff0c;针对 Mission Planner 地面站参数树条目繁多、英文术语晦涩、新手难以快速定位关键项的痛点&#xff0c;对参数树进行了系统翻译与归纳。内容覆盖 ACRO 特技模式锁定与角速度、ADSB 广播式监视… · 2026/9/23 23:27:59

论文查重与AI检测双降方案的技术实现与应用
论文查重与AI检测双降方案的技术实现与应用

1. 项目背景与核心痛点毕业季来临&#xff0c;论文查重成了无数学生的噩梦。去年某高校研究生院的统计数据显示&#xff0c;超过67%的延毕案例与查重问题直接相关。与此同时&#xff0c;AI写作工具的爆发式增长让学术诚信问题愈发凸显&#xff0c;各大高校纷纷升级查重系统&… · 2026/9/23 23:27:59

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码