1
$ tar zxf ns-allinone-2.34.tar.gz
2
$ cd ns-allinone-2.34
$ ./install
然后就开始安装ns-allinone-2.34,大概过几分钟,在结束时候突然报错:
ld -shared-o libotcl.so otcl.o
otcl.o: Infunction `OTclDispatch':
/usr/ns-allinone-2.34/otcl-1.13/otcl.c:495:undefined reference to `__stack_chk_fail_local'
otcl.o: Infunction `Otcl_Init':
/usr/ns-allinone-2.34/otcl-1.13/otcl.c:2284:undefined reference to `__stack_chk_fail_local'
ld:libotcl.so: hidden symbol `__stack_chk_fail_local' isn'tdefined
ld: finallink failed: Nonrepresentable section on output
make: ***[libotcl.so]错误1
otcl-1.13make failed! Exiting ...
分析错误原因:
这是因为gcc版本高了,gcc 4.0以前的版本是用ld –share来生成共享库的,但是到了gcc 4.0以后的版本,这个命令就改成了gcc –share。 在终端里输入gcc –v查看,我的版本是gcc version 4.4.3。
解决办法:
$ cd ns-allinone-2.34/otcl-1.13
$ gedit configure.in
把77行处的:
SHLIB_LD="ld -shared",
改为
SHLIB_LD="gcc -shared",
然后:
$ gedit configure
将6304行处的:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
SHLIB_LD="ld -shared",
改为
SHLIB_LD="gcc -shared",
保存退出。
3 安装xmu
# apt-get install libxmu-dev
4
然后:
$cd ns-allinone-2.34
回到目录ns-allinone-2.34下运行
$./install
5 配置环境变量
# gedit ~/.bashrc
添加:
export LD_LIBRARY_PATH=/root/NS2/ns-allinone-2.34/otcl-1.13:/root/NS2/ns-allinone-2.34/lib:$LD_LIBRARY_PATH
export TCL_LIBRARY=/root/NS2/ns-allinone-2.34/tcl8.4.18/library
export PATH=/root/NS2/ns-allinone-2.34/bin:/root/NS2/ns-allinone-2.34/tcl8.4.18/unix:/root/NS2/ns-allinone-2.34/tk8.4.18/unix:$PATH