Hola a todos. Me acabo de inscribir en estos foros porque después de mucho trastear y mirar manuales no he conseguido compilar un programa utilizando las autotools (aclocal, autoheader, automake, autoconf). El programa es sencillito, consta de un módulo para la librería (librbfbd.h, ibrbfbd.c) y para el programa principal (bdviewer_func.h bdviewer_func.c bdviewer.c). Me explico, si tengo todos los fuentes en el mismo directorio lo compila perfectamente; es cuando los organizo en una estructura de árbol cuando no consigo que me compile. A continuación les cuento los detalles: - Estructura de directorios: a partir de un directorio llamado bdviewer cuelga el siguiente árbol. Los fuentes se encuentran en src/exe, para el programa, y en src/lib, para la librería. ./doc ./src/exe ./src/lib ./src ./build
Uso el siguiente configure.ac: AC_INIT([BDViewer], [1.0],[EMAIL PROTECTED]) AM_INIT_AUTOMAKE([bdviewer], [1.0]) AM_CONFIG_HEADER(config.h) AC_PROG_CPP AC_PROG_CC AC_PROG_RANLIB AC_PROG_MAKE_SET AC_CHECK_HEADERS([mysql.h mysql/mysql.h]) AC_SEARCH_LIBS([mysql_real_connect],[mysqlclient],,AC_MSG_ERROR([No se puede enlazar con libmysqlclient])) AC_CONFIG_FILES([Makefile src/Makefile src/lib/Makefile src/exe/Makefile]) AC_OUTPUT Y los siguientes Makefiles.am: 1) En el raíz del proyecto: SUBDIRS = src EXTRA_DIST = doc 2) En la carpeta src: SUBDIRS = lib exe 3) En la carpeta lib: lib_LIBRARIES = librbfbd.a librbfbd_a_SOURCES = librbfbd.h librbfbd.c 4) En la carpeta exe: INCLUDES = -I$(top_srcdir)/src/lib bin_PROGRAMS = bdviewer bdviewer_SOURCES = bdviewer_func.h bdviewer_func.c bdviewer.c bdviewer_LDFLAGS = -L$(top_srcdir)/src/lib/ bdviewer_LDADD = -lrbfbd --------------------------------------------------- Como se puede ver el programa no tiene mucha ciencia, sin embargo, después de generar los scripts con (aclocal, autoheader, automake, autoconf), me paso al directorio build/ y desde allí ejecuto ../configure, cuando termina de configurar ejecuto el comando make y me da el siguiente resultado: make --all-recursive make[1]: se ingresa al directorio '/bdviewer/build' Making all in src make[2]: se ingresa al directorio '/bdviewer/build/src' Making all in lib make[3]: se ingresa al directorio '/bdviewer/build/src/lib' gcc -DHAVE_CONFIG_H -I. -I../../../src/lib -I../.. -g -O2 -c ../../../src/lib/librbfbd.c rm -f librbfbd.a ar cru librbfbd.a librbfbd.o ranlib librbfbd.a make[3]: se sale del directorio '/bdviewer/build/src/lib' Making all in exe make[3]: se ingresa al directorio '/bdviewer/build/src/exe' gcc -DHAVE_CONFIG_H -I. -I../../../src/exe -I../.. -I../../../src/lib -g -O2 -c ../../../src/exe/bdviewer_func.c gcc -DHAVE_CONFIG_H -I. -I../../../src/exe -I../.. -I../../../src/lib -g -O2 -c ../../../src/exe/bdviewer.c gcc -g -O2 -o bdviewer -L../../../src/lib/ bdviewer_func.o bdviewer.o-lrbfbd -lmysqlclient /usr/bin/ld: no se puede encontrar -lrbfbd collect2: ld devolvió el estado de salida 1 make[3]: *** [bdviewer] Error 1 make[3]: se sale del directorio '/bdviewer/build/src/exe' make[2]: *** [all-recursive] Error 1 make[2]: se sale del directorio '/bdviewer/build/src' make[1]: *** [all-recursive] Error 1 make[1]: se sale del directorio '/bdviewer/build' make: *** [all-recursive-am] Error 2 ------------------------- Yo creo que el fallo está en el Makefile.am que está en src/exe, sin embargo, después de leer documentación a punta pala, no consigo verlo por ningún lado. Si alguno de ustedes me puede ayudar con alguna idea o indicarme en que me estoy equivocando lo agradecería. Muchas gracias por su atención.