在最近的一次NS2-2.33安装过程中,出现了点问题,就是说一开始在Ubuntu 9.04下安装,顺利结束,后来升级部分软件(我使用的免费光盘安装的Ubuntu)后,重新安装NS2竟然不能编译了。老是出现类似问题:
/home/gang/ns-allinone-2.33/otcl-1.13/otcl.c:2284: undefined reference to `__stack_chk_fail_local’ld: libotcl.so: hidden symbol `__stack_chk_fail_local’ isn’t definedld: final link failed: Nonrepresentable section on outputmake: *** [libotcl.so] 错误 1otcl-1.13 make failed! Exiting …这个问题出现得很郁闷,想了好久也没头绪。终于在一篇NsNam bug报告中,发现问题所在。原来是ld的问题,在gcc 4.0版本以前是用ld -share来生成共享库,但是到了4.0以及以上版本,这个命令改为了gcc -share。好了,问题找到了,就知道该怎么处理了。
进入otcl-1.13目录,找到configure.in.因为我用的是ubuntu,所以只改Linux平台部分就得,
将77行,
SHLIB_LD=”ld -shared”
改为
SHLIB_LD=”gcc -shared”
同时修改configure 第5518行
SHLIB_LD=”ld -shared”
改为
SHLIB_LD=”gcc -shared”
重新./install
好了,没有问题了。