संकलित करें मैं snort नामक ओपन सोर्स प्रोजेक्ट के साथ काम कर रहा हूं, जो लिनक्स के तहत सी में लिखा गया है। मैंने नेटबीन्स में परियोजना को सही तरीके से खोला और अब मैं इस स्रोत कोड में कुछ बदलाव करने जा रहा हूं। प्रोग्राम के src फ़ोल्डर में कई फ़ोल्डर्स हैं और प्रत्येक फ़ोल्डर में कुछ फ़ोल्डर्स भी हैं। मैंने सुना है कि netbeans फ़ाइलों को बनाने में सक्षम है। मैं फ़ोल्डर XFolder में src फ़ाइलों में कुछ बदलाव कर रहा हूं और मेरी प्रोजेक्ट (वाईफ़ोल्डर) में किसी अन्य फ़ोल्डर में लाइब्रेरी फ़ंक्शन का उपयोग करना चाहता हूं। मैंने .h फ़ाइल शामिल की और फ़ंक्शन का सही ढंग से उपयोग किया।सी में हेडर फाइलों सहित और
#include"../YFolder/lib.h"
अब जब मैं इस कार्यक्रम को संकलित कर सकते हैं, यह ठीक है, लेकिन जब मैं गतिशील पुस्तकालयों ".so (साझा वस्तु फ़ाइलें)" का उपयोग करें कि मेकअप प्रक्रिया में बनाया है, और प्रोग्राम चलाएं, मुझे एक त्रुटि दिखाई देती है जिसका अर्थ है कि मैं जिस फ़ोल्डर को अन्य फ़ोल्डर से उपयोग करता हूं वह परिभाषित नहीं है और यह त्रुटि देखता है; (sfxhash_new बाहरी फ़ंक्शन का नाम है जिसे मैंने बुलाया)।
libsf_sip_preproc.so: अपरिभाषित प्रतीक: sfxhash_new
मैं भी Makefile.am संपादित और उस पैकेज (../YFolder/lib.c and lib.h
) के सूत्रों जोड़ा गया; लेकिन प्रभावी नहीं है। क्या कोई भी कृपया मेरी मदद कर सकता है?
संपादित करें:
मैं फ़ोल्डर src/डायनामिक-पूर्वप्रक्रमक/घूंट में हूँ मैं फ़ाइल में एक समारोह का उपयोग करना चाहते: src/sfutil/sfxHash.c समारोह नाम sfxhash_new है (... .. ...) मैं sfxHash.h सही ढंग से शामिल किया गया। मैंने कुछ बदलाव किए हैं मेरे मेकफ़ाइल.एम में लेकिन मुख्य मेकफ़ाइल यह है।
मेरे 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 @[email protected]
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
आपको एलडीएफएलजीएस के बहुत अंत में '-lnet -lpcre' इत्यादि झंडे रखना होगा, क्या आपने ऐसा किया था? –
यह भी मदद कर सकता है [यहां] (http://stackoverflow.com/questions/480764/linux-error-while-loading-shared- पुस्तकालय- कैनोट-open-shared-object-file-no-s) – ervinbosenbacher
यह भी ध्यान दें कि 'अपरिभाषित प्रतीक' त्रुटियों के पास सही या गलत शीर्षलेख फ़ाइल समावेशन के साथ कुछ लेना देना नहीं है; वे लिंकर त्रुटियां हैं और दिखाते हैं कि कुछ पुस्तकालय गायब हैं। –