该ns-2.29_mpolsr.rar
文件已损坏,因为作者mpolsr
只更改了. Makefile
,但没有更改Makefile.in
. 因此,当您运行 . 时./configure
,您将擦除Makefile
.
这些是编译它需要执行的步骤:
1. 编辑Makefile.in
:
将目录olsr
和添加mpolsr
到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
.