JNI - JAVA Makefile (?)

0

Hej,

Potrzebuje zrobic biblioteke dla JNI.
Chce uruchomic program napisany wieki temu - ktory wykonywal pewne operacje na dokumencie PDF przy uzyciu libpoppler napisamym w C.
Jak skonstruowac Makefile.am, aby wynikiem make byla biblioteka so ?

Jak najlepiej uruchamiac zewnetrzna aplikacje przez JNI? system() chyba nie jest dobrym rozwiazaniem?

Niestety nie dziala, jakby nie widzial bibliotek (mam je w systemie)

 
lib$(JNI_NAME).so:	$(OBJECTS)
			g++  $(CFLAGS) -lstdc++ -lpoppler -o [email protected]  $(OBJECTS) -lc

poppler_Pdf.o:   poppler_Pdf.cpp
			g++  $(CFLAGS) -lpoppler -lstdc++ -fPIC -c $<
0

Zostawiam dla potomnych :)

Mam pytanie, skompilowalem w sposob nastepujacy:

 
JDK_HOME  = /usr/lib/jvm/java-8-oracle
INCLUDES =					\
	-I$(top_srcdir)				\
	-I$(top_srcdir)/goo			\
	-I$(top_srcdir)/utils			\
	-I$(top_srcdir)/poppler			\
	$(UTILS_CFLAGS)				\
	$(PDFTOCAIRO_CFLAGS)			\
	-I$(JDK_HOME)/include			\
	-I$(JDK_HOME)/include/linux
    
LDADD =						\
	$(top_builddir)/poppler/libpoppler.la	\
	$(UTILS_LIBS)

AM_LDFLAGS = @auto_import_flags@

lib_LTLIBRARIES = libpdf.la
CFLAGS+=$(PTHREAD_CFLAGS)
CXXFLAGS+=$(PTHREAD_CFLAGS)

libpdf_la_LIBADD = $(LDADD)
libpdf_la_LDFLAGS = -version-info 46:0:0 @create_shared_lib@ @auto_import_flags@

libpdf_la_SOURCES =		\
	poppler_Pdf.cpp		

 
anowak@asus:~/poppler-0.26.5/jni$ ldd libpdf.so
	linux-vdso.so.1 =>  (0x00007fff440b2000)
	libpoppler.so.46 => /home/asdf/poppler-0.26.5/poppler/.libs/libpoppler.so.46 (0x00007ff506c5a000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff50692e000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff506568000)
	libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007ff506342000)
	libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007ff506105000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007ff505e5c000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff505c3e000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff505938000)
	/lib64/ld-linux-x86-64.so.2 (0x00007ff5072f3000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff505720000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff505507000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007ff5052de000)

Podlinkowalo sie wszystko prawidlowo.

Teraz, rozumiem ze gdy przeniose moja biblioteke do innego systemu to musze rowniez kopiowac /home/asdf/poppler-0.26.5/poppler/.libs/libpoppler.so.46 ?

0
galleanv napisał(a):

http://www.trilithium.com/johan/2005/06/static-libstdc/

o sdt wiem, ale ja mam customowa biblioteke ;)

0

Nie rozumiem, co masz na myśli pisząc 'customowa bibliotekę'.
Jeżeli kompilujesz to (poppler_Pdf.cpp) na swojej maszynie to tam gdzie będzie niekompatybilny std to.... to nie zadziała.
(Przynajmniej tak to rozumiem)

0
galleanv napisał(a):

Nie rozumiem, co masz na myśli pisząc 'customowa bibliotekę'.
Jeżeli kompilujesz to (poppler_Pdf.cpp) na swojej maszynie to tam gdzie będzie niekompatybilny std to.... to nie zadziała.
(Przynajmniej tak to rozumiem)

kompiluje sobie libPDF.so, ktory uzywa jakiejs tam biblioteki z internetów libpoppler.o
sdt mam juz wkompilowany, ale nie potrafie "na sztywno" dodac libpoppler`a, ciagle chce dynamic-linking robic

wychodzi na to, ze serwery musialby miec zainstalowane... a na 10 nie chce mi sie tam wchodzic i robic apt-get install :\

1 użytkowników online, w tym zalogowanych: 0, gości: 1