NS2安装以及configure --enable-debug后的问题解决方法

Ubuntu 10.04下安装ns2-allinone-2.33(或者ns2-allinone-2.31)

进入ns-allinone-2.33文件夹输入$ cd ./install安装,差不多等几分钟吧,然后会出现一个错误提示:
make: *** [libotcl.so] 错误 1
otcl-1.13 make failed! Exiting ...
See http://www.isi.edu/nsnam/ns/ns-problems.html for problems


这是因为gcc版本高了,gcc 4.0版本以前是用ld -share来生成共享库的,但是到了4.0以上的版本,这个命令改为了gcc -share。在终端里输入gcc -v查看,我的版本是gcc version 4.4.1。


然后进入$ cd /ns-allinone-2.33/otcl-1.13,然后$ sudo gedit configure.in


把77行(如果不是,在附近找)的SHLIB_LD="ld -shared",改为SHLIB_LD="gcc -shared",保存退出。然后


$ sudo gedit configure


在5518行找(如果不是,在附近找),把SHLIB_LD="ld -shared"改为SHLIB_LD="gcc -shared",保存退出。


cd回到目录ns-allinone-2.33下,重新运行


sudo ./install


顺利完成安装。最后出来提示:


Please put /home/jyq/ns-allinone-2.33/bin:/home/jyq/ns-allinone2.33/tcl8.4.18/unix:/home/jyq/ns-allinone-2.33/tk8.4.18/unix


into your PATH environment; so that you'll be able to run itm/tclsh/wish/xgraph.


IMPORTANT NOTICES:


(1) You MUST put /home/jyq/ns-allinone-2.33/otcl-1.13, /home/jyq/ns-allinone-2.34/lib,
into your LD_LIBRARY_PATH environment variable.
If it complains about X libraries, add path to your X libraries
into LD_LIBRARY_PATH.
If you are using csh, you can set it like:
setenv LD_LIBRARY_PATH <paths>
If you are using sh, you can set it like:
export LD_LIBRARY_PATH=<paths>


 (2) You MUST put /home/jyq/ns-allinone-2.33/tcl8.4.18/library into your TCL_LIBRARY environmental
variable. Otherwise ns/nam will complain during startup.


    After these steps, you can now run the ns validation suite with
cd ns-2.33; ./validate


    For trouble shooting, please first read ns problems page
http://www.isi.edu/nsnam/ns/ns-problems.html. Also search the ns mailing list archive
for related posts.


这个是因为没有配置环境变量,然后cd进入/home/jyq/下,$ sudo gedit .bashrc。


在文件末尾加入:


PATH="$PATH:/home/jyq/ns-allinone-2.33/bin:/usr/ns-allinone-2.33/tcl8.4.18/unix:/home/jyq/ns-allinone-2.33/tk8.4.18/unix"


LD_LIBRARY_PATH="/home/jyq/ns-allinone-2.33/otcl-1.13:/usr/ns-allinone-2.33/lib"


TCL_LIBRARY="$TCL_LIBRARY:/home/jyq/ns-allinone-2.33/tcl8.4.18/library"


保存退出。然后重新安装 $ sudo ./install。


到ns2.33目录下把NS可执行命令考到/bin目录下
sudo cp ns-2.33/ns.exe /bin


到这一步,应该可以说完成了,在终端输入ns,出现%就证明安装成功。


但是运行nam时,会出现如下错误:


[code omitted because of length]
: no event type or button # or keysym
    while executing
"bind Listbox <MouseWheel> {
%W yview scroll [expr {- (%D / 120) * 4}] units
}"
    invoked from within
"if {[tk windowingsystem] eq "classic" || [tk windowingsystem] eq "aqua"} {
bind Listbox <MouseWheel> {
%W yview scroll [expr {- (%D)}] units
}
bind Li..."

上网查了一下,说是ns2.33的nam调用的tk组件和 xproto-7.0.13 不兼容导致的(xproto-7.0.13 新添加了 GenericEvent),所以我们要打上补丁。有的教程说写个patch,然后运行,我觉得这个方法没有那么好,至少对于我这种菜鸟是如此,直接在tk-8.4.14/generic/tkBind.c的第588行添加如下代码:


#ifdef GenericEvent
      0,
#endif


保存退出。然后在重新安装一遍。有的机器在这一步应该就可以运行了,但是我的没有,输入nam还是运行不了,还是出现nam错误,我又查了一下,原来是ns.exe文件和nam.exe文件没放到/usr/local/bin/下,然后在打开终端输入

$ sudo cp -i nam /usr/local/bin/
$ sudo cp -i ns /usr/local/bin/

将ns和nam都copy过来就行。
再次运行ns应该就没有问题了,至少我的机器没问题了,然后输入:


$ ns /ns-allinone-2.33/ns-2.33/tcl/ex/simple.tcl


就会出现一个简单的nam窗口。就大功告成了。


==============================================================================

在编译过程中,编译器的报错和警告信息对于程序员来说是非常重要的信息,GCC包含完整的出错检查和警告提示功能,它可以帮助Linux程序员尽快找出错误的或潜在的错误代码,从而写过更优美的代码。GCC的编译器警告选项如下表:

类型 说明
-Wall 启用所有警告信息
-Werror 在发生警告时取消编译操作,即将警告看作是错误
-w 禁用所有警告信息
使用./configure --enable-debug之后,编译器会降低报错等级,make过程中的warning将变为error,这需要让编译器不将warning报错:
将安装文件中的makefile中第55行
CCOPT = -g -Wall -Werror -Wall 修改成为CCOPT = -g -Wall -Wall
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值