ubuntu安装ns2常见错误收集一

原文:http://blog.csdn.net/lemonzh/article/details/1725726

问题一:刚开始安装时显示gcc can't create executables之类的提示

解决方案:
这是由于我用的是ubuntu免费邮寄的安装盘,安装后的系统中gcc是不能用来的开发的,只有一个空壳,所以需要重新安装gcc。

先用命令: sudo apt-get remove gcc
然后:   sudo apt-get install build-essential

便成功解决问题。

问题二:再次安装NS2时发现安装至tk8.4.13时出现错误,安装中断退出。在安装日志上发现一句:x11/xlib.h nosuch file or directory 在网上查阅了资料,原来是x11M没有装。

解决方案:
先安装X11,命令为 sudo apt -get install libx11-dev
结果仍然出错如下:
checking for main in -lXbsd... no
checking for socket in -lsocket... no
checking for gethostbyname in -lnsl... yes
checking for dcgettext in -lintl... no
checking for getnodebyname in -ldnet_stub... no
checking that g++ can handle -O2... no
checking standard STL is available... no
checking for tcl.h... -I../include
checking for tclInt.h... -I../include
checking for libtcl8.4... -L../lib -ltcl8.4
checking for init.tcl... ../lib/tcl8.4
checking for http.tcl... ../lib/tcl8.4/http1.0
checking Tcl http.tcl library... yes
checking for tclsh8.4.11... no
checking for tclsh8.4... ../bin/tclsh8.4
checking for tk.h... -I../include
checking for libtk8.4... -L../lib -ltk8.4
checking for tk.tcl... ../lib/tk8.4
checking for X11 header files
can't find X includes
otcl-1.12 configuration failed! Exiting ...
Please check http://www.isi.edu/nsnam/ns/ns-problems.html
for common problems and bug fixes.
还是没有得到解决.分析了一下可能是x11没有安装完整,

于是先输入:sudo apt-cache search x11-dev
得到以下信息:
libx11-dev - X11 client-side library (development headers)
xlibs-dev - X Window System client library development files transitional package
libghc6-x11-dev - Haskell X11 binding for GHC
libooc-x11-dev - X11 specific modules for the oo2c compiler (devel)
libgl1-mesa-swx11-dev - A free implementation of the OpenGL API -- development support files
分别安装上面的组件,命令如下:
sudo apt-get install libx11-dev
sudo apt-get install xlibs-dev
sudo apt-get install libghc6-x11-dev
sudo apt-get install libooc-x11-dev

问题附加:会遇到报错:

make: *** [libotcl.so]错误1

otcl-1.13 make failed! Exiting ...

See http://www.isi.edu/nsnam/ns/ns-problems.html for problems

 原因是:

gcc 4.0版本以前是用ld -share来生成共享库的,但是到了4.0以上的版本(比较新版本的ubuntu的gcc肯定高过4.0),这个命令改为了gcc -share即可

解决过程:

cd /home/endymion/ns-allinone-2.34/otcl-1.13

1、sudo gedit configure.in

把77行处的

SHLIB_LD="ld -shared"

改为

SHLIB_LD="gcc -shared"

保存退出,然后

2、sudo gedit configure

把6304行的

SHLIB_LD="ld -shared"

改为

SHLIB_LD="gcc -shared"

保存退出


然后继续安装,等了半天,安装完成!

问题三:安装好NS2后,还有设置环境变量。

命令为: sudo gedit ~/.bashrc
在打开的.bashrc文件结尾加上三句:
export PATH="/home/ns2/ns-allinone-2.30/bin:/home/ns2/ns-allinone-2.30/nam-1.12:/home/ns2/ns-allinone-2.30/tcl8.4.13/unix:/home/ns2/ns-allinone-2.30/tk8.4.13/unix"

export LD_LIBRARY_PATH=" /home/ns2/ns-allinone-2.30/otcl-1.12, /home/ns2/ns-allinone-2.30/lib"

export TCL_LIBRARY=" /home/ns2/ns-allinone-2.30/tcl8.4.13/library"

注意:/home/ns2/ns-allinone-2.30/为安装文件所在目录,三个环境变量的值在NS2安装完成时在提示信息中会给出。
另外补充一点:我在设置了上述环境变量后,发现ls命令不能使用了,我分析得出:可能是设置环境变量时将系统原来的PATH值替换掉了。于是我将上面三句删掉,重新打开一个
终端,输入命令 sudo echo $PATH 得到原始值为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
将上面的值粘贴到上面的第一句末尾,注意用分号分开各个路径,如下:
export PATH="/home/ns2/ns-allinone-2.30/bin:/home/ns2/ns-allinone-2.30/nam-1.12:/home/ns2/ns-allinone-2.30/tcl8.4.13/unix:/home/ns2/ns-allinone-2.30/tk8.4.13/unix:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
然后再将修该后的三个语句放到.bashrc中即可。设置好后,打开终端输入ns回车就会出现%,表明设置成功。

问题四:安装成功后运行样例程序发现ns模拟没有问题就是不能自动调用nam!
显示错误为:

ns: finish: couldn't execute "nam": no such file or directory
while executing
"exec nam out.nam &"
(procedure "finish" line 7)
invoked from within
"finish"

解决方案:
先手动编译nam生成可执行文件nam
进入NS_HOME/nam-1.12(NS_HOME为安装ns2的路径)输入命令:make
结果显示错误:
xwd.c:87:29: 错误: X11/Xmu/WinUtil.h:No such file or directory
make: *** [xwd.o] 错误 1
问题是xmu没有安装,于是只好再装xmu,
命令为:
sudo apt-get install libxmu-dev

然后在输入make进行编译,完成后在NS_HOME/nam-1.12/中可以发现可执行文件nam将其复制到 NS_HOME/bin/目录下,这样由于$PATH环境变量中有NS_HOME/bin项,nam就可以直接运行了。

至此,终于大功告成了!!!

 

(2)问题解决

一般来说只要环境满足条件,安装应该很顺利

但是也有遇到问题的时候

 

问题1:

checking system version (for dynamic loading)...

./configure: line 7624:syntax error near unexpected token `)'

./configure: line 7624: ` OSF*)'

tcl8.3.2 configuration failed! Exiting ...

Tcl is not part of the ns project.

 

解决办法:

在ns-allinone-x.xx目录下

$ grep 'system=MP-RAS-' */* -n

$ grep 'system=MP-RAS-' */*/* -n

$ grep 'system=MP-RAS-' */*/*/* -n

把那些文件里的

system=MP-RAS-`awk ' { print $3 } '/etc/.relid'`

改为:

system=MP-RAS-`awk ' { print $3 } '/etc/.relid`

也就是那行多了一个'号

问题2:

make: *** [tk3d.o] 错误 1

安装libx11-dev可以解决问题

问题3:

can't find X includes

otcl-1.11 configuration failed Exiting ...

安装x-window-system-dev可以解决问题

问题4:

make: g++:命令未找到

make: ***[tcl2c++]错误 127

tclcl-1.17 make failed! Exiting ...

安装g++

编译出错

1.如何去掉warning: assignment makes pointer from integer without a cast的警告

编写了段代码:
函数原形为:char *cfg_get(const char *name);

在main()中调用上述函数方式如下:
char *dev_IMEI = cfg_get((char *)"dm_imei");

但是此调用处编译出现warming如下:
warning: assignment makes pointer from integer without a cast

请问为啥会有这样的warming,如何修改才能不出现这样的warming?

原因是:头文件里面有声明了函数char *cfg_get(const char *name);

去掉就可以不

2. syntax error near unexpected token `in

在Vim中解决这个问题,很简单,在Vim中利用替换功能就可以将“^M”都干掉,键入如下替换命令行:

1)vi -b setup.sh

2)在命令编辑行<就是: 按ESC键 然后shift+:冒号>输入:%s/^M//g

注意:上述命令行中的“^M”符,不是“^”再加上“M”,而是由“Ctrl+v”、“Ctrl+M”键生成的。

这样替换掉以后,保存就可以执行了。当然还有其他的替换方式比如:

a.一些linux版本有 dos2unix 程序,可以用来祛除^M。

b.cat filename1 | tr -d "\r" > newfile 去掉^M生成一个新文件,还有sed命令等,凡是可以替换的命令都是可以用来新生 成一个文件的

3.implicit declaration of function `memset'

C库没有包含进来

加入include "string.h"就解决不

4.warnings being treated as errors

去掉 CFLAGS 里的 -Werror

按几下TAB看是否是按装相应版本的编译器

 
我单独又碰到一个问题:
安装完后,再安装ns2.终于正确地安装了ns2.兴奋中~~~~ 
posted @ 2012-09-24 10:54  xiaolongxia  阅读(2347)  评论(0)    收藏  举报