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。