jueves, agosto 30, 2007

Compilar tcpreplay en MacOS X

Compilar el tcpreplay en MacOS X es una pequeña aventura, en especial porque los scripts de configure que se (*cof*,*cof*) deben de permitir la portabilidad, no funcionan tan trasparentemente como parece. Las versiones que tiene el Tiger, son un poco antiguas, y por tanto, al generar el configure hay problemas. En especial, son incapaces de detectar que la extensión de una librería dinámica en MacOS X es .dylib - simplemente usan una substitución de shell que no funciona con la versión de bash que trae MacOS X -

Al final he instalado las últimas versiones de libtool,automake y autoconf, modificado el configure.ac, y todo funciona correctamente. Otro punto para las autotools. Un detalle, no olvidar decirle al aclocal la ruta a sus ficheros.

configure.ac:

--- tcpreplay-3.2.0/configure.ac        2007-08-26 22:06:47.000000000 +0200
+++ tcpreplay-3.2.0.mod/configure.ac    2007-08-30 12:04:12.000000000 +0200
@@ -466,19 +466,22 @@
 AC_ARG_WITH(libpcap,
     AC_HELP_STRING([--with-libpcap=DIR], [Use libpcap in DIR]),
     [trypcapdir=$withval])
-
        for testdir in $trypcapdir /usr/local /opt/local /usr ; do 
        if test -f "${testdir}/include/pcap.h" -a $foundpcap = no ; then
                LPCAPINC="${testdir}/include/pcap.h"
                LPCAPINCDIR="${testdir}/include"
+               echo "Dentro con $testdir ${libext} ${shrext_cmds} $dynamic_link"
+               eval dynext=\"$shrext_cmds\"
+               echo "Extension $dynext"
                if test $dynamic_link = yes; then
-                               if test -f "${testdir}/lib64/libpcap${shrext_cmds}" ; then
+                               if test -f "${testdir}/lib64/libpcap$dynext" ; then
                            LPCAPLIB="-L${testdir}/lib64 -lpcap"
-                               elif test -f "${testdir}/lib/libpcap${shrext_cmds}" ; then
+                               elif test -f "${testdir}/lib/libpcap$dynext" ; then
                                        LPCAPLIB="-L${testdir}/lib -lpcap"
                                else
                                        AC_ERROR([Unable to find libpcap in ${testdir}])
                                fi
+               echo "Dinamico"
                elif test -f "${testdir}/lib64/libpcap.${libext}" ; then
                    LPCAPLIB="${testdir}/lib64/libpcap.${libext}"
                elif test -f "${testdir}/lib/libpcap.${libext}" ; then

No hay comentarios: