Я работаю с проектом с открытым исходным кодом под названием snort, который написан на C под Linux. Я правильно открыл проект в netbeans и сейчас собираюсь внести некоторые изменения в этот исходный код. Папка src программы содержит несколько папок, а также в каждой папке есть несколько папок. Я слышал, что netbeans может создавать файлы make. Я вношу некоторые изменения в файлы src в папке XFolder и хочу использовать библиотечную функцию в другой папке в моем проекте (YFolder). Я включил файл .h и правильно использовал функцию.
#include"../YFolder/lib.h"
Теперь, когда я могу скомпилировать программу, все в порядке, но когда я использую динамические библиотеки ".so (общие объектные файлы)", созданные в процессе make; и запустите программу, я вижу ошибку, которая означает, что функция, которую я использовал из другой папки, не определена, и вижу эту ошибку; (sfxhash_new - это имя внешней функции, которую я вызвал).
libsf_sip_preproc.so: неопределенный символ: sfxhash_new
Я также отредактировал Makefile.am и добавил исходники этого пакета (../YFolder/lib.c and lib.h
); Но не эффективно. Кто-нибудь может мне помочь?
РЕДАКТИРОВАТЬ:
Я нахожусь в папке src / dynamic-preprocessor / sip. Я хочу использовать функцию в файле: src / sfutil / sfxHash.c, имя функции - sfxhash_new (... ... ...) Я правильно включил sfxHash.h. Я внес некоторые изменения в свой файл Makefile.am, но это основной файл makefile.
Мой файл 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