c++11编译是为了方便写一些代码
- 第一种方法:在Makefile.in里进行修改
例如所有的cc和cpp改成对应的
//原始的ns2 Makefile—很老的gcc版本 具体不清楚
CC = @cc@
CPP = @cxx@
//改成gcc-v=4.8
CC = gcc-4.8
CPP = g++-4.8
//改成gcc-v=4.8 且用c++11标准
CC = gcc-4.8 -std=c++11
CPP = g++-4.8 -std=c++11
https://blog.csdn.net/hhhhh2333/article/details/89223984
- 第二种方法:
用./install进行编译的时候
export CC=gcc-4.8 CXX=g++-4.8 && ./install
另外,用gcc4.8和c++11标准编译NS2时,有额外一个地方要修改:
./mdart/mdart_function.h
如果出现hash的错误,请找到错误代码出在hash前面加上双冒号::,这样可以显示调用没有在命名空间声明的hash函数,从上面的错误来看可以这么改
mdart/mdart_adp.cc: In member function ‘void ADP::sendDarq(nsaddr_t, int)’: mdart/mdart_adp.cc:108:21: error: reference to ‘hash’ is ambiguous nsaddr_t dstAdd_ = hash(reqId);
改成 nsaddr_t dstAdd_ = ::hash(reqId);
注意用英文字符,然后再用上面的代码编译就好了