mFogSim项目基于OMNeT++4.6在Ubuntu系统构建时报错如何解决
mFogSim Ubuntu 环境构建报错排查方案
1. 版本兼容性校验
- 确认Ubuntu环境下的OMNeT版本严格为4.6、INET版本严格为3.6.4:Ubuntu官方软件源默认提供的OMNeT通常为更高版本,版本不匹配会直接导致NED函数注册逻辑不兼容,触发未定义引用报错。
- 若版本不符,先卸载当前版本,从OMNeT++官方存档下载对应4.6版本源码编译安装,INET手动导入3.6.4版本包,不要使用IDE自动推送的更新版本。
2. 编译依赖与字符编码修复
- 先安装OMNeT++ 4.6运行所需的全量依赖,执行命令:
sudo apt-get install build-essential gcc g++ bison flex perl python qt4-default libqt4-dev libxml2-dev zlib1g-dev default-jre doxygen graphviz libwebkitgtk-1.0-0
- Windows下的源码默认字符编码多为GBK,Ubuntu默认用UTF-8解析,会导致
NEDFunctions.cc内的函数符号注册时出现隐性字符不匹配,执行编码转换命令:
iconv -f GBK -t UTF-8 NEDFunctions.cc -o NEDFunctions.cc
3. 构建配置修正
- 右键项目选择
Properties,进入OMNeT++->Makemake选项,选中项目根目录的makemake配置,点击Options - 切换到
Compile标签页,确认已添加INET的头文件引用路径;切换到Link标签页,确认已链接INET的静态库文件 - 勾选
Force recalculate makefile选项,保存后执行Project->Clean清理所有构建产物,再重新构建项目
4. NED函数注册逻辑校验
- 检查
NEDFunctions.cc中注册函数的宏是否为OMNeT++ 4.6对应的Define_NED_Function格式,确认函数参数类型、返回值类型和NED文件中调用的格式完全一致。 - 排查函数名、参数名的大小写差异:Windows环境大小写不敏感,Linux环境大小写严格敏感,拼写大小写不一致也会触发未定义报错。
内容的提问来源于stack exchange,提问作者Malak
相关产品推荐
相关产品推荐

