[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: probleme autoconf automake



Il y a une virgule ici: -Wl,--export-dynamic (je ne sais pas si c'est
obligatoire) mais pourquoi en as tu besoin?

oui, je tappait ca de tete ;-) mais la virgule est bien presente

J'ai un projet à base de modules dynamiques qui fonctionne très bien sans.

en fait dans l'idee, les modules utilisent des symboles tels que des singletons qui sont definis dans le core du serveur et le --export-dynamic permet de resoudre ces symboles uniquement au loading du module en allant tapper dans ceux du serveur.
C'est tout du moins le fonctionnement auquel j'etait parvenu en utilisant un Makefile a la mano dans lequel je precisait juste l'export-dynamic au moment du link (la difference etait que tout les .o etaient compiles et ensuite ils etaient tous linkes d'un coup -- ca ne passait pas par des librairies temporares comme c'est le cas avec mes Makefiles.am)

As tu lancé libtoolize? (peut être qu'un make maintainer-clean aiderait aussi)

J'ai lance un libtoolize, mais je n'ai pas vu beaucoup de difference (il n'y a pas eu d'output). Je testerait le make maintainer-clean, mais a chaque fois que je fait un test, je recompile tout les objs (le core du serveur et le module que je test ne sont pas tres longs a compiler) 

Sinon c'est pas très clair, comment compiles tu les modules et comment les
utilises tu ? (avec lt_dlopen?) Le makefile complet serait utile (si il ne
fait pas 15 pages :)

Voici donc les extraits de mes differents fichiers :


 * Configure.in a la racine du projet:

AC_INIT(Core, 1.0, bug-report@mailinator.org)
AM_INIT_AUTOMAKE(Core, 1.0)
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_DEFINE(TIXML_USE_STL)
AC_DEFINE(BOOST_ALL_NO_LIB)
AC_PROG_INSTALL
AC_OUTPUT( \
    ./Makefile \
    ./src/Makefile \
    ./src/core/Makefile \
    ./src/core/common/Makefile \
    ./src/include/Makefile \
    ./src/modules/Makefile \
    ./src/modules/module1/Makefile \
    )


* Le Makefile.am a la racine

SUBDIRS = src


 * Le Makefile.am dans ./src

SUBDIRS = \
    core \
    include \
    modules

 * Le Makefile.am dans ./src/core (c'est la ou la compile du core se fait, et c'est la qu'il y a le main.cpp et les sous repertoires qui separent le code du core. je simplifie l'arborescence pour des questions de lisibilite)

SUBDIRS = common

bindir            = @prefix@/bin
bin_PROGRAMS    = core

coredir            = @prefix@/bin
core_SOURCES        = main.cpp

core_LDADD        = common/libcorecommon.a

INCLUDES    = \
    -I@top_srcdir@/src/include \
    -I./common

LIBS    = -lpthread -ldl -Wl,--export-dynamic


 * Le Makefile.am dans le repertoire ./src/core/common/ (celui qui est sense compiler la libcorecommon.a qui sera linkee ensuite avec le main.cpp (.o) ) -- C'est dans ce repertoire que le Parser et le Logger sont des singletons et donc j'aurais besoin que les symboles soient accessibles depuis mes modules.

noinst_LIBRARIES = libcorecommon.a

libcorecommon_a_SOURCES    = \
    Parser.h    \
    Parser.cpp    \
    Logger.h                \
    Logger.cpp                \
    Utils.h                    \
    Utils.cpp

INCLUDES    = -I@top_srcdir@/src/include/

 * et enfin le Makefile.am d'un des modules ( ./src/modules/module1/ )

lib_LTLIBRARIES    = mod1.la

mod1_la_SOURCES = \
    header1.h \
    source1.cpp \
    header2.h \
    source2.cpp

mod1_la_LDFLAGS    = -version-info 1:0:0

INCLUDES = \
    -I@top_srcdir@/src/include \
    -I@top_srcdir@/src/core/common


Voila, je pense que le probleme viens d'un de mes fichiers ou d'une etape que je fait mal, mais comme je suis debutant en Autotools, je ne suis pas encore au fait des bonnes pratiques.

deux questions bonus pour terminer :
1) pour resoudre mon probleme de compilation et d'export-dynamic je pourrais passer par un Makefile.am dans ./src/core/ qui compilerait tout mes fichiers (meme ceux qui sont dans des sous-repertoires) en une seule fois. mais est-ce vraiment propre?
2) quelles difference entre automake-autoconf-libtool et autotools? les premiers font-ils partie du second?

Merci d'avance

--
105 116 039 115 032 110 111 116 032 097
032 098 117 103 044 032 105 116 039 115
032 097 032 102 101 097 116 117 114 101
Reply to: