libraw を Android 共有ライブラリとしてビルドしようとしています。ライブラリが複雑すぎて Android.mk などで使用できないように見えますが、それ以上のことはできません。
NDK のスタンドアロン ツールチェーンを使用する方法を試しましたが、このライブラリをコンパイルするときにスタックしてしまいます。
これは、lib をコンパイルするためのパスです。明らかな誤りがある場合は指摘してください。
- ndkをダウンロードしました。
- 走った:
make-standalone-toolchain.sh
bin
そのスタンドアロン ツールチェーンのフォルダーを my の最初の項目として追加しましたPATH
。- で走っ
./configure
た--host=arm-linux-androideabi
。これは成功しました - Ran
make
、ここで非常に速くクラッシュしました。
LibRaw-0.14.4$ make depbase=`エコー内部/dcraw_common.lo | sed の|[^/]*$|.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=\"info@libraw.org\" -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: コンパイル: arm-linux-androideabi-g++ -DPACKAGE_NAME=\"LibRaw\" -DPACKAGE_TARNAME=\"libraw\" -DPACKAGE_VERSION=\"0.14.4\" "-DPACKAGE_STRING=\"LibRaw 0.14.4\"" -DPACKAGE_BUGREPORT=\"info@libraw.org\" -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: メンバ関数 'void LibRaw::read_shorts(ushort*, int)': internal/dcraw_common.cpp:119: エラー: 'swab' はこのスコープで宣言されていませんでした internal/dcraw_common.cpp: メンバ関数 'void LibRaw::write_ppm_tiff()': internal/dcraw_common.cpp:9235: エラー: 'swab' はこのスコープで宣言されていませんでした make: *** [internal/dcraw_common.lo] エラー 1
このエラー メッセージがここ stackoverflow で役立つとは思えませんが、これを機能させるために追加のフラグまたは構成を適用する必要があるかどうか疑問に思っています。
クロスコンパイルせずにシステム用にコンパイルするだけで、このライブラリを正常にコンパイルできることに注意してください。(Linux 32 ビット)。
Android 用の GDAL をビルドするための手順 (ここ) を参照すると、追加の設定が使用されますLIBS="-lsupc++ -lstdc++"
。これは STL と C++ の例外をリンクしますか? ただし、実行する前にそれらを設定すると、configure
次のようなエラーがすぐに発生します。
configure:3018: C++ コンパイラが動作しているかどうかを確認しています 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: 見つかりません-lsupc++ collect2: ld が 1 つの終了ステータスを返しました
だから、私は少し立ち往生しています。誰かアイデア?