PDA

View Full Version : C++ Problemi di linking - Linux Ubuntu


Dylan11090
16-02-2011, 21:53
Ciao a tutti, per un progetto universitario sto modificando firefox per salvare su di un database delle stringhe javascript. Per collegarmi al database ho scaricato una libreria, ho eseguito il comando make install (quindi ho le librerie libhiredis.so e .a in /usr/local/lib e il file hiredis.h in /usr/local/include). All'interno della classe che ho modificato ho aggiunto #include "hiredis.h" ma quando lancio la compilazione mi appare questo errore:


jsinvoke.cpp
c++ -o jsinvoke.o -c -I./../../dist/include/system_wrappers_js -include /home/manuel/Scrivania/mozilla-1.9.1/js/src/config/gcc_hidden.h -DFEATURE_NANOJIT -DJS_TRACER -DOSTYPE=\"Linux2.6\" -DOSARCH=Linux -DEXPORT_JS_API -DJS_USE_SAFE_ARENA -I/home/manuel/Scrivania/mozilla-1.9.1/js/src -I. -I./../../dist/include -I./../../dist/include/js -I/home/manuel/Scrivania/mozilla-1.9.1/objdir-ff-release/dist/include/nspr -I/sdk/include -I/home/manuel/Scrivania/mozilla-1.9.1/js/src -fPIC -fno-rtti -fno-exceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -lhiredis -Wno-invalid-offsetof -Wno-long-long -pedantic -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -Os -fstrict-aliasing -DMOZILLA_CLIENT -include ./mozilla-config.h -Wp,-MD,.deps/jsinvoke.pp /home/manuel/Scrivania/mozilla-1.9.1/js/src/jsinvoke.cpp
In file included from /home/manuel/Scrivania/mozilla-1.9.1/js/src/jsbuiltins.h:45,
from /home/manuel/Scrivania/mozilla-1.9.1/js/src/jstracer.h:53,
from /home/manuel/Scrivania/mozilla-1.9.1/js/src/jsinterp.cpp:74,
from /home/manuel/Scrivania/mozilla-1.9.1/js/src/jsinvoke.cpp:42:
/home/manuel/Scrivania/mozilla-1.9.1/js/src/nanojit/nanojit.h:151:30: warning: anonymous variadic macros were introduced in C99
/home/manuel/Scrivania/mozilla-1.9.1/js/src/nanojit/nanojit.h:198:23: warning: anonymous variadic macros were introduced in C99
In file included from /home/manuel/Scrivania/mozilla-1.9.1/js/src/nanojit/nanojit.h:245,
from /home/manuel/Scrivania/mozilla-1.9.1/js/src/jsbuiltins.h:45,
from /home/manuel/Scrivania/mozilla-1.9.1/js/src/jstracer.h:53,
from /home/manuel/Scrivania/mozilla-1.9.1/js/src/jsinterp.cpp:74,
from /home/manuel/Scrivania/mozilla-1.9.1/js/src/jsinvoke.cpp:42:
/home/manuel/Scrivania/mozilla-1.9.1/js/src/nanojit/Native.h:122:22: warning: anonymous variadic macros were introduced in C99
rm -f libmozjs.so
c++ -fno-rtti -fno-exceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -lhiredis -Wno-invalid-offsetof -Wno-long-long -pedantic -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -Os -fstrict-aliasing -fPIC -shared -Wl,-z,defs -Wl,-h,libmozjs.so -o libmozjs.so jsapi.o jsarena.o jsarray.o jsatom.o jsbool.o jscntxt.o jsdate.o jsdbgapi.o jsdhash.o jsdtoa.o jsemit.o jsexn.o jsfun.o jsgc.o jshash.o jsinterp.o jsinvoke.o jsiter.o jslock.o jslog2.o jsmath.o jsnum.o jsobj.o json.o jsopcode.o jsparse.o jsprf.o jsregexp.o jsscan.o jsscope.o jsscript.o jsstr.o jsutil.o jsxdrapi.o jsxml.o prmjtime.o jstracer.o Assembler.o Fragmento.o LIR.o RegAlloc.o avmplus.o Nativei386.o jsbuiltins.o -lpthread -Wl,-rpath-link,/bin -Wl,-rpath-link,/lib -L/home/manuel/Scrivania/mozilla-1.9.1/objdir-ff-release/dist/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -ldl -lm -lm -ldl -lhiredis
jsinterp.o: In function `js_Interpret':
jsinterp.cpp: (.text+0x8ce5): undefined reference to `redisConnect'
jsinterp.cpp: (.text+0x8d0d): undefined reference to `redisCommand'
/usr/bin/ld.bfd.real: libmozjs.so: hidden symbol `redisConnect' isn't defined
/usr/bin/ld.bfd.real: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
make[4]: *** [libmozjs.so] Errore 1
make[4]: uscita dalla directory «/home/manuel/Scrivania/mozilla-1.9.1/objdir-ff-release/js/src»
make[3]: *** [libs_tier_js] Errore 2
make[3]: uscita dalla directory «/home/manuel/Scrivania/mozilla-1.9.1/objdir-ff-release»
make[2]: *** [tier_js] Errore 2
make[2]: uscita dalla directory «/home/manuel/Scrivania/mozilla-1.9.1/objdir-ff-release»
make[1]: *** [default] Errore 2
make[1]: uscita dalla directory «/home/manuel/Scrivania/mozilla-1.9.1/objdir-ff-release»
make: *** [build] Errore 2

Come potete vedere ho anche trovato all'interno dei 1000 makefile di firefox il posto in cui inserire -lhiredis. Il problema č che la classe che non riesce a compilare non č quella che ho modificato ma un'altra che usa la classe che ho modificato (la mia classe č jsinterp.cpp mentre il compilatore non riesce a compilare jsinvoke.cpp). Quale potrebbe essere il problema?