【问题标题】:ns2 mpolsr compilation error for wsnwsn 的 ns2 mpolsr 编译错误
【发布时间】:2013-02-03 10:08:22
【问题描述】:

我正在尝试用gcc-4.7 编译Linux Mint 中的ns-2.29 修补的mpolsr。我收到以下错误:

trace/cmu-trace.o: In function `MPOLSR_pkt::access(Packet const*)':
cmu-trace.cc:(.text._ZN10MPOLSR_pkt6accessEPK6Packet[_ZN10MPOLSR_pkt6accessEPK6Packet]+0x7): undefined reference to `MPOLSR_pkt::offset_'
collect2: error: ld returned 1 exit status
make: *** [ns] Error 1

我发现cmu-trace.cc 文件包含正确的标题。我尝试添加具有偏移函数定义但没有成功的 cc 文件。任何帮助将不胜感激。

我正在使用ns-2.29_mpolsr.rar

【问题讨论】:

    标签: gcc linker makefile ns2


    【解决方案1】:

    ns-2.29_mpolsr.rar 文件已损坏,因为mpolsr 的作者只更改了Makefile,但没有更改Makefile.in。因此,当您运行./configure 时,您将擦除Makefile 中的更改。

    这些是编译它需要执行的步骤:

    1.编辑Makefile.in

    将目录olsrmpolsr 添加到INCLUDES 变量。它应该是这样的:

    INCLUDES = \
            -I. \
            @V_INCLUDES@ \
            -I./tcp -I./sctp -I./common -I./link -I./queue \
            -I./adc -I./apps -I./mac -I./mobile -I./trace \
            -I./routing -I./tools -I./classifier -I./mcast \
            -I./diffusion3/lib/main -I./diffusion3/lib \
            -I./diffusion3/lib/nr -I./diffusion3/ns \
            -I./diffusion3/filter_core -I./asim/ -I./qs \
            -I./diffserv -I./satellite \
            -I./wpan -I./olsr -I./mpolsr
    

    mpolsr 的目标文件添加到OBJ_CC 变量中。您应该像这样添加一行(中间的那一行是新行):

            olsr/OLSR.o olsr/OLSR_state.o olsr/OLSR_rtable.o olsr/OLSR_printer.o \
            mpolsr/MPOLSR.o mpolsr/MPOLSR_state.o mpolsr/MPOLSR_m_rtable.o mpolsr/MPOLSR_printer.o mpolsr/MPOLSR_rtable.o\
            common/ns-process.o \
    

    如果您使用的是新版本的gcc,还应添加-fpermissive 指令,否则编译失败。为此,请将.cc.o: 指令更改为:

    .cc.o:
            @rm -f $@
            $(CPP) -fpermissive -c $(CFLAGS) $(INCLUDES) -o $@ $*.cc
    

    2。使配置脚本可执行

    ns-2.29_mpolsr目录下,运行

    chmod +x configure
    

    3。运行配置脚本

    根据 ns 的 allinone 版本,您可以这样运行:

    ./configure --with-otcl=$PWD/../otcl-1.13/ --with-tclcl=$PWD/../tclcl-1.19/
    

    以上版本号适用于ns-allinone-2.34

    4.制作

    在同一目录下运行

    make -j100
    

    我用gcc-4.6.3检查了上面的内容,但它也应该适用于gcc-4.7

    【讨论】:

    • 非常感谢。没想到这么详细的回答来的这么快。非常感谢。
    • 效果非常好。但我无法投票,因为我的分数较低。
    猜你喜欢
    • 2019-09-04
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2014-06-19
    • 2021-10-18
    • 2011-09-04
    相关资源
    最近更新 更多