私はAndroid共有ライブラリとしてlibrawを構築しようとしています。 libがAndroid.mkなどで使用するにはあまりにも複雑すぎるようです。私はそれを行うことはまだできません。スタンドアロンのツールチェーンアンドロイドアームでネイティブライブラリを構築する
私はNDKのスタンドアロンのツールチェーンを使用するルートを試しましたが、このlibをコンパイルするときに固まっています。
これはlibをコンパイルするためのパスです。明らかなエラーが発生している場合は、指摘してください。
- 私はndkをダウンロードしました。
- RAN:
make-standalone-toolchain.sh
- は私の
PATH
に最初の項目としてそのスタンドアロンのツールチェーンのbin
フォルダを追加しました。 - an
./configure
と--host=arm-linux-androideabi
。これは成功しました - Ran
make
、ここでは非常に高速にクラッシュしました。
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
私は、このエラーメッセージはstackoverflowの時にここに参考になっているが、私は、私はこの作業を取得するためにいくつかの追加のフラグや設定を適用しているかどうかを疑問に残っています疑いますか?
私のシステムでコンパイルせずにコンパイルすれば、このlibをうまくコンパイルできることに注意してください。 (Linux 32ビット)。
Android用GDALの作成手順(here)を調べるときは、追加設定としてLIBS="-lsupc++ -lstdc++"
が使用されます。これはSTLとC++の例外をリンクしますか?私はすぐにようなエラーを取得私のconfigure
を実行する前に、それらを設定すると しかし、:
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
を、私は少しこだわっています。誰かアイデア?
こんにちは@Peterdkあなたはスワブ機能の実装がどこにあるのか教えていただけますか?あなた自身で書きましたか? – asloob
こんにちは、私はちょうどそれのためにグーグルだと思う。私はそれを自分で書きませんでした。おそらくクリスタックスの検索と組み合わせてもよいでしょう。 – Peterdk
ありがとう!見つけた。 – asloob