• CORE EMU初接触


    1 关于CORE与EMANE

    由于个人兴趣,研究了一下模拟仿真工具CORE与EMANE的用法。作为一位入门者,还是遇到不少问题,记录下来,以供后来者参考。
    CORE与EMANE是两款开源软件,其官方的代码与文件都托管在github上,查找CORE相关资料是时注意使用coreemu关键字进行搜索。

    2 CORE安装

    CORE与EMANE通常搭配起来使用,所以在CORE的安装说明中包括了ENAME的安装与配置,建议按照CORE给出的安装步骤进行,不然会导致一些编译或者运行上的问题。

    安装CORE时,我参考的安装步骤在https://coreemu.github.io/core/install_ubuntu.html中。这个安装过程基本没有遇到什么问题。

    3 ENAME安装

    从GITHUB克隆并编译EMANE。编译时执行configure命令时一定要指定prefix=/usr ,也就是将emane相关文件安装在/usr目录下,否则默认会安装在/usr/local目录下。虽然安装在/usr/local目录下,通过修改/etc/core/core.conf中的配置项emane_prefix也能向CORE指示EMANE的安装位置,但仍然存在一个尚未规避的问题,那就是XML中指定一些模板文件的位置使用得是以/usr开头的绝对路径,如果安装在/usr/local下则无法找到对应的模板文件。

    4 PYTHON Bindings安装

    在执行make install安装EMANE之后,并没有全部完成EMANE的安装,还有一个python bindings相关的安装,如安装步骤所述,进入EMANE的src/python,再进行编译安装python bindings。如果没有编译安装这部分代码,在CORE中添加EMANE节点后无法正常运行,会弹出出错窗口, 提示无法找到emane python bindings相关组件。

    这里也需要注意下,要按照安装步骤,在编译src/python之前,还要下载
    protoc-3.19.6-linux-x86_64.zip,并设置环境变量使protoc命令指向这个下载的文件。原因是,如果本地系统中已经安装的protoc版本低于3.19.0,会导致编译出错。

    完成如上步骤完成后,就可以正常运行CORE与EMANE。因为我还要运行emane-tutorial中的示例程序,从GITHUB下载此项目后,还需要在此项目下运行make命令进行编译。在编译时总发现有错误导致无法编译完成:

    pkg_resources.ResolutionError: Script ‘scripts/emanegentransportxml’ not found in >>> metadata at ‘/opt/core/venv/lib/python3.10/site-packages/emane-1.4.1.egg-info’

    这个问题研究了半天,感觉还是和emane python组件相关,终于在EMANE的src/python/dist目录下发现已经生成的emane-1.4.1-py3.10.egg文件,将其解压后的内容复制到/opt/core/venv/lib/python3.10/site-packages/emane-1.4.1.egg-info目录下,终于解决问题,emane-tutorial顺利编译通过。

    另外,在编译示例程序2时,出现如下错误:

    mkdir .emanegentransportxml &&
    cd .emanegentransportxml &&
    emanegentransportxml …/platform.xml &&
    for i in $(ls *.xml); do chmod g-w,u-w $i; cp -f $i …; done &&
    cd … &&
    rm -rf .emanegentransportxml
    error: Error reading file ‘rfpipenem.xml’: failed to load external entity “rfpipenem.xml”

    经分析是rules.mk中的编译脚本的问题,参考https://github.com/adjacentlink/emane-tutorial/issues/29中修改方法进行解决,即不再创建一个临时目录 .emanegentransportxml,直接进行编译。
    至此,完成了整个CORE与EMANE相关内容的编译,记录并共享。

  • 相关阅读:
    热点文章采集-热点资讯采集工具免费
    如果我要用Python偷表情包
    代码随想录 | Day 51 - LeetCode 309.最佳买卖股票时机含冷冻期、LeetCode 714.买卖股票的最佳时机含手续费
    Webpack和JShaman相比有什么不同?
    Synchronized 与 Lock 的使用
    JdbcTemplate查询操作
    《Java 后端面试经》微服务篇
    SpringBoot3自动配置流程及原理、SpringBootApplication注解详解
    Java程序员必会Synchronized底层原理剖析
    在 Spring 4.3.9下升级 Velocity 1.7.x to Velocity 2.0.x 出现的问题
  • 原文地址:https://blog.csdn.net/ygd11/article/details/132831312