2010年1月21日星期四

慎用 "./configure"

运行 ./configure后,ns的makefile文件会恢复到默认状态(将你添加的makefile中的语句删除)。

如果你添加过新的协议,在makefile中做了修改,当你运行./configure后,重新make ns就会报错:

“This should work unless it involves constant data structures referencing symbols
from auto-imported DLLs.trace/cmu-trace.o:cmu-trace.cc:(.text$_ZN12hdr_smcr_pkt
6accessEPK6Packet[hdr_smcr_pkt::access(Packet const*)]+0x7): undefined reference
to `hdr_smcr_pkt::offset_'
trace/cmu-trace.o:cmu-trace.cc:(.text$_ZN9hdr_wcett6accessEPK6Packet[hdr_wcett::
access(Packet const*)]+0x7): undefined reference to `hdr_wcett::offset_'
Info: resolving __timezone by linking to __imp___timezone (auto-import)
collect2: ld returned 1 exit status
make: *** [ns] Error 1”

因为smcr和wcett是后来添加的路由协议,都在makefile中添加了相关语句;当运行./configure后相关语句被删除,新协议未被编译,从而找不到 “xx::offset”

因此,如果需要使用./configure,记得运行后新修改makefile;通常,重新编译时,不运行./configure应该也可以正确重新编译ns