EMANE版本的编译问题

EMANE最新版本编译问题

在Ubuntu 18.04上编译EMANE最新版本

在ubuntu 18.04上使用make deb编译EMANE1.5.1时,会卡在如下地方:

make[6]: Entering directory ‘/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1’
/bin/bash /home/xxx/emane-1.5.1/.debbuild/emane-1.5.1/install-sh -d /home/xxx/emane-1.5.1/.debbuild/emane-1.5.1/debian/tmp/usr/share/emane/manifest
./scripts/emanegenmanifests.sh /home/xxx/emane-1.5.1/.debbuild/emane-1.5.1/debian/tmp/usr/share/emane/manifest

通过跟踪./scripts/emanegenmanifests.sh脚本,进一步定位问题,发现卡的地方是如下命令:

/home/xxx/emane-1.5.1/src/applications/emaneinfo/.libs/emaneinfo -m nemmanage

使用gdb执行emaneinfo来打印堆栈,如下所示:
在这里插入图片描述
发现卡住的代码在src/libemane/configurationservice.cc中的如下位置:

void EMANE::ConfigurationService::registerAny(BuildId buildId,
const std::string & sName,
ConfigurationInfo && configurationInfo)
{
std::lock_guardstd::mutex m(mutex_);

}

即卡住在mutex_这个锁的位置。通过mutextrace工具进行追踪,也没有发现死锁的现象。最后是逐步进行日志打印发现,通过修src/libemane/configurationservice.h中的如下代码:

protected:
ConfigurationService();

为:

public:
ConfigurationService();

可以规避这个问题。出错的原因通过打印猜测:在protected下ConfigurationService()构造函数未被调用。在卡住的情况下,打印中没有ConfigurationService()构造函数中的输出,有可能导致了mutex初始化的问题。而修改为public后,在打印中可以看到ConfigurationService()构造函数的输出,且不会发生卡住的情况。
规避完成这个问题之后,继续编译会出现如下问题:

make[6]: Leaving directory ‘/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1’
make[5]: Nothing to be done for ‘install-data-am’.
make[5]: Leaving directory ‘/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1’
make[4]: Leaving directory ‘/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1’
make[3]: Leaving directory ‘/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1’
make[2]: Leaving directory ‘/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1’
dh_install
/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1/debian/emane.install: 1: /home/xxx/emane-1.5.1/.debbuild/emane-1.5.1/debian/emane.install: /usr/bin/emane: not found
/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1/debian/emane.install: 2: /home/xxx/emane-1.5.1/.debbuild/emane-1.5.1/debian/emane.install: /usr/bin/emaneinfo: not found
/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1/debian/emane.install: 3: /home/xxx/emane-1.5.1/.debbuild/emane-1.5.1/debian/emane.install: /usr/share/man/man1/emane.1: not found
dh_install: debian/emane.install (executable config) returned exit code 127
debian/rules:20: recipe for target ‘binary’ failed
make[1]: *** [binary] Error 127
make[1]: Leaving directory ‘/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1’
dpkg-buildpackage: error: fakeroot debian/rules binary subprocess returned exit status 2
Makefile:892: recipe for target ‘deb’ failed
make: *** [deb] Error 2

现在没有进一步调试。

在Ubuntu 22.04上编译EMANE最新版本

换用Ubuntu 22.04编译EMANE1.5.1时可用顺利编译通过。但在这个过程中也遇到一些波折。开始时EMANE1.5.1位于NTFS文件系统时,编译时遇到如下权限问题:
在这里插入图片描述上图看起来以为是权限问题,实际上是由于文件系统导致的。将EMANE1.5.1在linux ext3/ext4文件系统下重新编译,没有出现上述问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网IT公司网站选择科技蓝,从来没让人失望过。

选择科技蓝色作为IT官网的主题颜色有以下好处: 专业感:科技蓝色通常与科技、创新和专业相关联,使用科技蓝色可以给访问者一种专业、可靠的印象,增强品牌形象,特别适合IT行业。技术感:科技蓝色给人一种科技…

微信小程序笔记 七!

页面配置 1. 页面配置文件的作用 小程序中,每个页面都有自己的 .json 配置文件,用来对当前页面的窗口外观、页面效果等进行配置。 2. 页面配置和全局配置的关系 小程序中,app.json 中的 window 节点,可以全局配置小程序中每个…

智心顾问:为心智障碍家庭带来温暖与专业支持

💙关爱从心开始 —— 理解心智障碍 在这个世界上,有这样一群特殊的群体——心智障碍者。他们通常伴随着个体认知、社会互动和学习能力的障碍。这些障碍可能源于遗传、环境或未知因素,但不应成为他们照护者获得信息和支持的阻碍。心智障碍者的…

「ClickHouse 极简教程」分布式下的 IN/JOIN 及 GLOBAL关键字

百度安全验证https://baijiahao.baidu.com/s?id1712073808973941124&wfrspider&forpc

C++结构体内存对齐规则

背景介绍 最近在使用Java语言写一个Java客户端,对接一个C/C语言编写的Server时,采用TCP协议进行通信,在将C结构体序列化的输出流转换为Java结构体时,需要按照结构体每个字段对应的字节长度截取字节流转换为Java类型,遇…

19 Shell编程之条件语句

目录 19.1 条件测试操作 19.1.1 文件测试 19.1.1 整数值比较 19.1.3 字符串比较 19.1.4 逻辑测试 19.2 if条件语句 19.2.1 if语句的结构 19.2.2 if语句应用示例 19.3 case分支语句 19.3.1 case语句的结构 19.3.2 case语句应用示例 19.1 条件测试操作 Shell环境根据命令执行后…

内容安全复习 1 - 信息内容安全概述

文章目录 信息内容安全简介网络空间信息内容安全大模型 人工智能简介 信息内容安全简介 网络空间 网络空间是融合物理域、信息域、认知域和社会域,控制实体行为的信息活动空间。 上图展示了网络空间安全的结构。可以看到将网络空间划分为了网络域和内容域两个部分。…

Kotlin设计模式:深入解析Facade模式

Kotlin设计模式:深入解析Facade模式 在软件开发中,随着系统复杂度的增加,管理和使用多个相关接口变得越来越困难。这时候,Facade模式(外观模式)就显得尤为重要。本文将深入探讨Kotlin中的Facade模式&#…

利用LabVIEW和数字孪生技术实现PCB电路板测试

利用LabVIEW和数字孪生技术对PCB电路板进行测试,可以通过动画展示实现测试过程的生动、形象和直观。本文详细说明了如何结合LabVIEW与数字孪生技术进行PCB电路板的测试,包括系统架构、实现方法以及具体展示效果,适合对外展示。 在现代电子制造…

前端项目外包出去,是我痛苦的开始。如何破?

不止一个老铁给我反馈,他们把其前端项目外包出去,非常的痛苦,远不如用自己的员工省心。明面上钱省了,实际精力大量耗费在上面,一算账并没省,反而闹了一肚子气,问我这事该如何破?其实…

CloudCompare二次开发目录(C++长期更新版)

目录 一、环境配置二、功能开发 本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、环境配置 WIN10系统下VS2019编译CloudCompare2.12.4CloudCompare与PCL数据格式的相互转换 二、功能开发 …

2024年电商618观察:这是最好的时代 这是最坏的时代

内容提要 目前阶段增长势头更强劲的是中小商家,而星图的核心数据还是10万多个品牌。 十九世纪,英国最伟大的作家狄更斯在他的小说《双城记》开篇中写道: 这是最好的时代,这是最坏的时代; 这是智慧的年代,…

游戏工作室的得力助手:探索高效代理IP软件的选择与应用

在数字化浪潮的推动下,游戏产业蓬勃发展,游戏工作室作为这一领域的重要参与者,其运营效率和稳定性成为了影响业务成功的关键因素。而在众多提升运营效率的工具中,代理IP软件凭借其独特的功能和优势,成为了游戏工作室不…

台式扫描电镜工作距离越远观察区越大?

台式扫描电镜(Scanning Electron Microscope, SEM)是一种高分辨率的显微镜,它利用电子束扫描样品表面,通过样品与电子束相互作用产生的信号来形成图像。这种显微镜广泛应用于材料科学、生物学和医学等领域,以观察样品的…

提示词绕过大模型安全限制

大模型安全绕过策略 简介 本文使用简单的提示词,可以在所有场景中实现针对某开源模型的安全策略绕过。 glm-4-9b-chat 的安全措施还有待完善。 上一代的6b比这一代的9B,要安全;上一代的6B大模型这一招没有用。 正常对话 若在下述正常互动…

经纬恒润EAS.HSM:驱动硬件信息安全

概述 HSM(Hardware Security Module)硬件安全模块,是一种用于保护和管理强认证系统所使用的密钥,并同时提供相关密码学操作的计算机硬件设备。 HSM 在汽车信息安全中扮演着至关重要的角色。随着汽车智能化和网联化的快速发展&am…

ONLYOFFICE8.1版本震撼来袭

目录 软件简介 产品概述: 功能特点: 技术原理: 版本与部署: 8.1版本更新 全新的PDF编辑器 1.文本编辑 2.页面处理 (添加、旋转、删除) 3.插入和调整各种对象,例如表格、形状、文本框、…

MYSQL十、MYSQL的存储过程和触发器的基本认识

存储过程 存储过程:存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合。调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单&#xff…

【学习笔记】数据结构(三)

栈和队列 文章目录 栈和队列3.1 栈 - Stack3.1.1 抽象数据类型栈的定义3.1.2 栈的表示和实现 3.2 栈的应用举例3.2.1 数制转换3.2.2 括号匹配的检验3.2.3 迷宫求解3.2.4 表达式求值 - 波兰、逆波兰3.2.5 反转一个字符串或者反转一个链表 3.3 栈与递归的实现3.4 队列 - Queue3.4…

Cell2Sentence:为LLM传输生物语言

像GPT这样的LLM在自然语言任务上表现出了令人印象深刻的性能。这里介绍一种新的方法,通过将基因表达数据表示为文本,让这些预训练的模型直接适应生物背景,特别是单细胞转录组学。具体来说,Cell2Sentence将每个细胞的基因表达谱转换…