====== 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.