Instalar NS-2 en Ubuntu 10.10
febrero 9, 2011 en tesis
NS-2 es uno de los simuladores más usados para, entre otras cosas, redes de sensores inalámbricas. Para mi tésis centrada en Radio Cognitiva es una herramienta bastante útil para probar gran parte de las cosas que queremos: seguridad y sensado del espectro.
Hace pocos días está disponible un nuevo simulador, NS-3, que busca mejorar el anterior, pero tras probarlo vi que le faltaban muchas funcionalidades todavía y opté por instalar la versión NS-2.34 en mi portátil Dell con Ubuntu 10.10. Sin embargo, tuve algunos problemas que quería compartir con vosotros:
Instalar NS-2
1/ Descargar las fuentes de aquí:
2/ Descomprimir las fuentes:
tar -xzvf ns-allinone-2.34.tar.gz
cd ns-allinone-2.34
3/ Instalar:
./install
4/ Aquí me encontré con el primer problema al aparecer el error siguiente:
otcl.o: In function `OTclDispatch’:
/home/bogdan/ns/ns-allinone-2.34/otcl-1.13/otcl.c:495: undefined reference to `__stack_chk_fail_local’
otcl.o: In function `Otcl_Init’:
/home/bogdan/ns/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’t defined
ld: final link failed: Nonrepresentable section on output
make: *** [libotcl.so] Error 1
otcl-1.13 make failed! Exiting …
5/ Para solucionar este problema debido a una incompatibilidad con el gcc-4.4, deberemos instalar la versión anterior del compilador:
sudo apt-get install g++-4.3
6/ Instalar con gcc-4.3:
CC=gcc-4.3 ./install
7/ A estas alturas ya tendremos instalado nuestro simulador, pero hace falta añadir algunas variables de entorno:
emacs ~/.bashrc
y añadimos lo siguiente al final del fichero:
# LD_LIBRARY_PATH
OTCL_LIB=/home/name/ns-allinone-2.34/otcl-1.13
NS2_LIB=/home/name/ns-allinone-2.34/lib
X11_LIB=/usr/lib
USR_LOCAL_LIB=/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$X11_LIB:$USR_LOCAL_LIB# TCL_LIBRARY
TCL_LIB=/home/name/ns-allinone-2.34/tcl8.4.18/library
USR_LIB=/usr/lib
export TCL_LIBRARY=$TCL_LIB:$USR_LIB# PATH
XGRAPH=/home/name/ns-allinone-2.34/bin
XGRAPH=$XGRAPH:/home/name/ns-allinone-2.34/tcl8.4.18/unix
XGRAPH=$XGRAPH:/home/name/ns-allinone-2.34/tk8.4.18/unix
NS=/home/name/ns-allinone-2.34/ns-2.34/
NAM=/home/name/ns-allinone-2.34/nam-1.13/
PATH=$PATH:$XGRAPH:$NS:$NAM
Instalar NAM
1/ Vamos al directorio ns-allinone-2.34/nam-1.14:
cd nam-1.14
2/ Compilamos:
make
3/ Aquí me apareció el siguiente error. Parece que necesitaba instalar alguna librería que no tenía:
xwd.c:87:29: X11/Xmu/WinUtil.h: El directorio no existe
4/ Instalar la librería necesaria:
sudo apt-get install libxmu-dev
Instalar Xgraph
1/ Por último instalaremos Xgraph:
cd ../xgraph-12.1
2/ Compilamos:
make
3/ El siguiente error que nos encontramos es el siguiente. Parece un comflicto entre una función de xgraph y otra de C:
gcc -DHAVE_CONFIG_H -I. -I. -I. -g -c dialog.c
dialog.c: In function ‘make_msg_box’:
dialog.c:780: warning: passing argument 2 of ‘getline’ from incompatible pointer type
/usr/include/stdio.h:653: note: expected ‘size_t * __restrict__’ but argument is of type ‘char *’
dialog.c:780: error: too few arguments to function ‘getline’
dialog.c: In function ‘getline’:
dialog.c:899: error: argument ‘lptr’ doesn’t match prototype
/usr/include/stdio.h:653: error: prototype declaration
dialog.c:899: error: number of arguments doesn’t match prototype
/usr/include/stdio.h:653: error: prototype declaration
make: *** [dialog.o] Error 1
4/ Para solucionarlo la forma más sencilla es renombrar la función getline a my_getline en el fichero dialog.c. De esta manera todo compilará correctamente.

