2013-02-03 34 views
1

我想編譯mpolsr修補ns-2.29Linux Mintgcc-4.7。我收到以下錯誤:ns2 mpolsr編譯錯誤爲wsn

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

回答

1

ns-2.29_mpolsr.rar文件被破壞,因爲mpolsr的作者只更改了Makefile,但沒有更改Makefile.in。因此,當您運行./configure時,您將清除Makefile中的更改。

這些都是你需要編譯它做的步驟:

1.編輯Makefile.in

添加目錄olsrmpolsrINCLUDES變量。它應該是這樣的:

INCLUDES = \ 
     -I. \ 
     @[email protected] \ 
     -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 [email protected] 
     $(CPP) -fpermissive -c $(CFLAGS) $(INCLUDES) -o [email protected] $*.cc 

2.配置腳本可執行

ns-2.29_mpolsr目錄,運行

chmod +x configure 

3.運行配置腳本

Dependi納克在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

+0

非常感謝。我沒有期待這麼詳細的答案太快。非常感謝。 – summer

+0

它非常有效。但我不能積極點我有較少的點。 – summer

+0

做到了:-)再次感謝...... – summer