JNI - JAVA Makefile (?)

Odpowiedz Nowy wątek
2015-02-01 09:14
Czarny Kaczor
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 $<

Pozostało 580 znaków

2015-02-01 09:41
Czarny Kaczor
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 = @[email protected]

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

libpdf_la_LIBADD = $(LDADD)
libpdf_la_LDFLAGS = -version-info 46:0:0 @[email protected] @[email protected]

libpdf_la_SOURCES =     \
    poppler_Pdf.cpp     

[email protected]:~/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 ?

Pozostało 580 znaków

2015-02-01 11:56
2015-02-01 12:00
Czarny Kaczor
0
galleanv napisał(a):

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

o sdt wiem, ale ja mam customowa biblioteke ;)

Pozostało 580 znaków

2015-02-01 12:12
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)

Pozostało 580 znaków

2015-02-01 12:36
Czarny Kaczor
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 :\

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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