Je travaille sur un projet open source appelé snort qui est écrit en C, sous Linux. J'ai ouvert le projet dans netbeans correctement et maintenant je vais faire quelques changements dans ce code source. Le dossier src du programme contient plusieurs dossiers et aussi chaque dossier a quelques dossiers. J'ai entendu dire que netbeans est capable de générer des fichiers make. Je fais quelques changements dans les fichiers src du dossier XFolder et je veux utiliser une fonction de bibliothèque dans un autre dossier de mon projet (YFolder). J'ai inclus le fichier .h et utilisé la fonction correctement.
#include"../YFolder/lib.h"
Maintenant, lorsque je peux compiler le programme, il est Ok, mais lorsque j'utilise les bibliothèques dynamiques ".so (shared object files)" qui ont été créées dans le processus make ; et que j'exécute le programme, je vois une erreur qui signifie que la fonction que j'ai utilisée à partir d'un autre dossier n'est pas définie et je vois cette erreur ; (sfxhash_new est le nom de la fonction externe que j'ai appelée).
libsf_sip_preproc.so : symbole non défini : sfxhash_new
J'ai également édité Makefile.am et ajouté les sources de ce paquet ( ../YFolder/lib.c and lib.h
) ; Mais pas efficace. Quelqu'un peut-il m'aider ?
EDIT :
Je suis dans le dossier src/dynamic-preprocessor/sip. Je veux utiliser une fonction dans le fichier : src/sfutil/sfxHash.c le nom de la fonction est sfxhash_new(... ... ...) J'ai inclus sfxHash.h correctement. J'ai fait quelques changements dans mon Makefile.am mais le makefile principal est le suivant.
Mon fichier Makefile.am :
## $Id
AUTOMAKE_OPTIONS=foreign no-dependencies
INCLUDES = -I../include -I${srcdir}/../libs -I$(srcdir)/includes
libdir = ${exec_prefix}/lib/snort_dynamicpreprocessor
lib_LTLIBRARIES = libsf_sip_preproc.la
libsf_sip_preproc_la_LDFLAGS = -shared -export-dynamic -module @XCCFLAGS@
if SO_WITH_STATIC_LIB
libsf_sip_preproc_la_LIBADD = ../libsf_dynamic_preproc.la
else
nodist_libsf_sip_preproc_la_SOURCES = \
../include/sf_dynamic_preproc_lib.c \
../include/sf_ip.c \
endif
libsf_sip_preproc_la_SOURCES = \
spp_sip.c \
spp_sip.h \
sip_config.c \
sip_config.h \
sip_parser.c \
sip_parser.h \
sip_dialog.c \
sip_dialog.h \
sip_roptions.c \
sip_roptions.h \
sip_utils.c \
sip_utils.h \
sip_debug.h \
../include/sfxhash.c \ -----------------> I have copied src files in this dictionary
../include/sfxhash.h ------------------>
EXTRA_DIST = \
sf_sip.dsp
all-local: $(LTLIBRARIES)
$(MAKE) DESTDIR=`pwd`/../build install-libLTLIBRARIES