Sto provando a creare libraw come libreria condivisa Android. Sembra che la lib sia troppo complessa da utilizzare con Android.mk ecc, o meglio: non sono ancora in grado di farlo.Creazione di una libreria nativa con toolchain autonomo Android arm
Ho provato il percorso dell'utilizzo di una toolchain standalone dall'NDK, ma mi sto bloccando durante la compilazione di questa libreria.
Questo è il percorso che prendo per compilare la lib. Si prega di notare se sto facendo errori evidenti:
- ho scaricato il NDK.
- corse:
make-standalone-toolchain.sh
- Aggiunto cartella
bin
di quel toolchain standalone come prima voce nella miaPATH
. - Ran
./configure
con--host=arm-linux-androideabi
. Questo è riuscito - Ran
make
, qui si è bloccato molto velocemente.
LibRaw-0.14.4$ make depbase=`echo internal/dcraw_common.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\ /bin/bash ./libtool --tag=CXX --mode=compile arm-linux-androideabi-g++ -DPACKAGE_NAME=\"LibRaw\" -DPACKAGE_TARNAME=\"libraw\" -DPACKAGE_VERSION=\"0.14.4\" -DPACKAGE_STRING=\"LibRaw\ 0.14.4\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"http://www.libraw.org\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I/usr/local/include -g -O2 -MT internal/dcraw_common.lo -MD -MP -MF $depbase.Tpo -c -o internal/dcraw_common.lo internal/dcraw_common.cpp &&\ mv -f $depbase.Tpo $depbase.Plo libtool: compile: arm-linux-androideabi-g++ -DPACKAGE_NAME=\"LibRaw\" -DPACKAGE_TARNAME=\"libraw\" -DPACKAGE_VERSION=\"0.14.4\" "-DPACKAGE_STRING=\"LibRaw 0.14.4\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"http://www.libraw.org\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I/usr/local/include -g -O2 -MT internal/dcraw_common.lo -MD -MP -MF internal/.deps/dcraw_common.Tpo -c internal/dcraw_common.cpp -fPIC -DPIC -o internal/.libs/dcraw_common.o internal/dcraw_common.cpp: In member function 'void LibRaw::read_shorts(ushort*, int)': internal/dcraw_common.cpp:119: error: 'swab' was not declared in this scope internal/dcraw_common.cpp: In member function 'void LibRaw::write_ppm_tiff()': internal/dcraw_common.cpp:9235: error: 'swab' was not declared in this scope make: *** [internal/dcraw_common.lo] Error 1
dubito che questo messaggio di errore è disponibile qui a StackOverflow, ma io sono rimasto chiedendo se avrei applicato alcune bandiere o di configurazione aggiuntive per ottenere questo lavoro?
Nota che sono in grado di compilare questa libreria con successo solo se compilo per il mio sistema senza crosscompiling. (linux 32 bit).
Quando si cerca un'istruzione per la creazione di GDAL per Android (here), viene utilizzata un'impostazione aggiuntiva di LIBS="-lsupc++ -lstdc++"
. Questo collega le eccezioni STL e C++? Tuttavia, quando ho impostato quelli prima di eseguire il mio configure
ottengo subito gli errori come:
configure:3018: checking whether the C++ compiler works configure:3040: arm-linux-androideabi-g++ conftest.cpp -lsupc++ -lstdc++ >&5 /tmp/android-chain/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: cannot find -lsupc++ collect2: ld returned 1 exit status
Quindi, io sono un po 'bloccato. Qualcuno un'idea?
Ciao @Peterdk puoi dirmi dove hai ottenuto l'implementazione della funzione di scansione? o l'hai scritto tu stesso? – asloob
Ciao, penso di aver cercato su Google. Non l'ho scritto da solo Forse anche combinato con una ricerca di Crystax. – Peterdk
Grazie! L'ho trovato. – asloob