====== Compilación de las fuentes ======
===== Script build.py =====
El script **build.py** es una de las herramientas **allinone**. Permite compilar una serie de elementos externos al propio simulador ns-3 que son necesarios para su funcionamiento. Sólo es neceario invocarlo sin parámetros:
cd ns-3-allinone
./build.py
===== Herramienta Waf =====
El simulador ns-3 emplea la herramienta [[http://code.google.com/p/waf/|waf]] para la configuración y automatización de la compilación de sus fuentes.
Waf es una herramienta alternativa a make
===== Configuración del sistema =====
Mediante waf se puede realizar un diagnóstico de las librerías que necesita ns-3, indicando si están instaladas y sus funcionalidades activadas. La selección de paquetes indicada en los **Requisitos** de instalación debería ser suficiente para que esta comprobación se pase con éxito.
cd ns-3-allinone/ns-3-dev
./waf configure
La salida del anterior comando será similar a esta:
Checking for program g++ : ok /usr/bin/g++
Checking for program cpp : ok /usr/bin/cpp
Checking for program ar : ok /usr/bin/ar
Checking for program ranlib : ok /usr/bin/ranlib
Checking for g++ : ok
Checking for program pkg-config : ok /usr/bin/pkg-config
Checking for regression reference traces : ok ../ns-3-dev-ref-traces (guessed)
Checking for -Wno-error=deprecated-declarations support : yes
Checking for -Wl,--soname=foo support : yes
Checking for header stdlib.h : ok
Checking for header signal.h : ok
Checking for header pthread.h : ok
Checking for high precision time implementation : 128-bit integer
Checking for header stdint.h : ok
Checking for header inttypes.h : ok
Checking for header sys/inttypes.h : not found
Checking for library rt : ok
Checking for header netpacket/packet.h : ok
Checking for header linux/if_tun.h : ok
Checking for pkg-config flags for GTK_CONFIG_STORE : ok
Checking for pkg-config flags for LIBXML2 : ok
Checking for library sqlite3 : ok
Checking for NSC location : ok ../nsc (guessed)
Checking for library dl : ok
Checking for NSC supported architecture x86_64 : ok
Checking for program python : ok /usr/bin/python
Checking for Python version >= 2.3 : ok 2.5.4
Checking for library python2.5 : ok
Checking for program python2.5-config : ok /usr/bin/python2.5-config
Checking for header Python.h : ok
Checking for -fvisibility=hidden support : yes
Checking for pybindgen location : ok ../pybindgen (guessed)
Checking for Python module pybindgen : ok
Checking for pybindgen version : ok 0.12.0.700
Checking for Python module pygccxml : not found
Checking for program sudo : ok /usr/bin/sudo
Checking for program hg : ok /usr/bin/hg
Checking for program valgrind : ok /usr/bin/valgrind
Checking for pkg-config flags for GSL : ok
---- Summary of optional NS-3 features:
Threading Primitives : enabled
Real Time Simulator : enabled
Emulated Net Device : enabled
Tap Bridge : enabled
GtkConfigStore : enabled
XmlIo : enabled
SQlite stats data output : enabled
Network Simulation Cradle : enabled
Python Bindings : enabled
Python API Scanning Support : not enabled (Missing 'pygccxml' Python module)
Use sudo to set suid bit : not enabled (option --enable-sudo not selected)
Static build : not enabled (option --enable-static not selected)
GNU Scientific Library (GSL) : enabled
En la anterior salida se pueden observar las siguientes líneas:
Checking for header sys/inttypes.h : not found
La ausencia de //sys/inttypes.h// no altera el buen funcionamiento de ns-3.
Aun por aclarar
Checking for Python module pygccxml : not found
En esta instalación no se ha procedido a instalar manualmente **pygccxml**, lo cual sólo tendrá consecuencias si se desea usar el lenguaje Python para programar simulaciones.
Use sudo to set suid bit : not enabled (option --enable-sudo not selected)
Static build : not enabled (option --enable-static not selected)
Aunque disponibles, no se han activado las características de compilación estática ni uso de //sudo//. Para activarlas sólo es necesario ejecutar:
./waf configure --enable-sudo --enable-static
===== Compilación =====
./waf
Si se ha activado el uso de **sudo** mediante el parametro --enable-sudo, al final del proceso de compilación se solicitará al usuario su clave para poder activar el bit de //suid// de algunos de los ejecutables benerados.