【发布时间】:2016-06-22 13:18:04
【问题描述】:
我正在尝试在 OMNeT++ 5.0 上编译最新的 INET 3.3.0。我正在运行 Arch Linux Linux arch 4.5.4-1-ARCH #1 SMP PREEMPT Wed May 11 22:21:28 CEST 2016 x86_64 GNU/Linux。
请注意,这适用于我的笔记本电脑,也运行 Arch Linux。但是在我的桌面上它失败了。
OMNeT++ 已安装并且可以运行,我可以毫无问题地运行示例项目。
但是,当我编译 INET 时,它总是失败。我已经尝试通过回答yes 来让 IDE 自行完成这一切,以安装最新的 INET。我自己下载了它,作为项目导入,右键单击并让它build project,然后我求助于进入INET目录,发出make makefiles,make MODE=release -j4,但这一切都会导致以下错误:
inet/common/serializer/ipv4/IPv4Serializer.cc:410:129: note: in C++11 destructors default to noexcept
inet/common/serializer/sctp/SCTPSerializer.cc
inet/common/serializer/tcp/TCPSerializer.cc
inet/common/serializer/udp/UDPSerializer.cc
In file included from inet/common/serializer/sctp/SCTPSerializer.cc:28:0:
./inet/common/serializer/sctp/headers/sctphdr.h:415:22: error: flexible array member in union
uint8_t info[];
^
以前版本的 INET 会导致不同的错误,但都不起作用。有人知道吗?
【问题讨论】:
-
系统上的 GCC 版本号是多少?这似乎是一个 C++ 兼容性问题。可能 GCC 是旧工具?
-
不,gcc 是版本
gcc version 6.1.1 20160602 (GCC)。如果有的话可能太新了? -
是的。 Inet 未使用 GCC 6.x 进行测试
-
我将降级 gcc 并尝试使用旧版本。你知道肯定支持哪个版本吗?
-
我已经从 AUR 安装了 gcc49,并试图通过发出 make CC=gcc-4.9(这是 gcc49 包提供的二进制文件)来告诉 Makefile 使用它的二进制文件。无济于事。可能是 Makefile 没有使用 CC 变量。