首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >项目中可用的本地头文件,但不提供此类文件或目录错误

项目中可用的本地头文件,但不提供此类文件或目录错误
EN

Stack Overflow用户
提问于 2017-07-14 23:00:37
回答 3查看 1.5K关注 0票数 3

从一整天开始,我都在尝试安装OverSim [http://www.oversim.org/wiki/OverSimInstall],这个make文件如下所示:

代码语言:javascript
运行
复制
all: checkmakefiles
    cd src && $(MAKE)

clean: checkmakefiles
    cd src && $(MAKE) clean

cleanall: checkmakefiles
    cd src && $(MAKE) MODE=release clean
    cd src && $(MAKE) MODE=debug clean
    rm -f src/Makefile

makefiles:
    cd src && opp_makemake -f --deep --make-so -o inet -O out $$NSC_VERSION_DEF

checkmakefiles:
    @if [ ! -f src/Makefile ]; then \
    echo; \
    echo '======================================================================='; \
    echo 'src/Makefile does not exist. Please use "make makefiles" to generate it!'; \
    echo '======================================================================='; \
    echo; \
    exit 1; \
    fi

doxy:
    doxygen doxy.cfg

tcptut:
    cd doc/src/tcp && $(MAKE)

我使用Omnet5.1.1,因为在Ubuntu16.04上不支持omnet4.2.2,我的gcc版本是5.4.1。

每次我尝试构建这个make时,它都会给出头文件没有找到的错误,就像在实际中一样,头文件在项目目录中存在。

代码语言:javascript
运行
复制
In file included from applications/ethernet/EtherAppCli.cc:21:0:
applications/ethernet/EtherAppCli.h:21:22: fatal error: INETDefs.h: No such file or directory

包括的内容如下:

代码语言:javascript
运行
复制
#include "INETDefs.h" //available at src/linklayer/contract/
#include "MACAddress.h" //available at src/base/

项目结构:

如何解决此生成错误?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-15 12:34:41

这是较新的OMNeT++版本5.x与较旧的OMNeT++版本3.x和4.x之间的基本区别。

据我所知,它是用OMNeT 3.x和4.2以及较早的INET版本发布的。这些老版本使用像--deep这样的参数来搜索包含文件,这就是为什么所包含的文件只是命名而不是以完整的路径输入。

较新的INET和OMNeT版本使用包含文件的分层路径设置。编译器必须给出完整的路径才能访问包含的文件。

因此,对于INET版本3.x和OMNeT++版本5.x,包含的内容如下:#include "inet/common/INETDefs.h"

Oversim不包括包含的标题的完整路径,这就是为什么在使用Oversim与较新的OMNeT版本一起使用时会出现错误的原因。

第一种选择是要么使用较早的OMNeT版本。或者在您的系统上并行安装一个旧的GCC,或者设置一个虚拟机,如果您愿意的话,使用一个更老的Ubuntu。

第二个(也是更复杂的)选项是采用所有包含路径,或者通过编译器/链接器的-I选项定义所有必需的路径。

坦率地说,我建议使用旧的OMNeT++ 4.2.2版本..。

票数 4
EN

Stack Overflow用户

发布于 2017-07-14 23:53:20

#include指令首先搜索与包含指令的文件相同的目录,然后搜索标准系统目录的预配置列表。

如果不希望将头文件移动到与EtherAppCli.cc相同的目录,则必须将这些头文件的路径添加到此预先配置的列表中,通常使用编译器选项。

-Ipath/to/dir

我不确定这是否是你的应用程序编译的目的,但这或多或少是你能做的。

检查安装指南中是否漏掉了任何东西。

票数 0
EN

Stack Overflow用户

发布于 2018-11-02 01:48:14

改用OMNet 4.6。继续使用内-20111118。你应该能够正常地建立一个互联网络。然后构建Oversim

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45112694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档