Android NDK cross-compile 続き
津路です。
前回では、armv7aをターゲットに指定して、C++ライブラリをコンパイルする手順を説明しました。
私は、libiconvをコンパイルしてみました。
libiconvのreadmeを読みますと、gettextライブラリと相互依存しているので、以下の手順でコンパイルしたほうがいいよ、と書いてあります。
libiconv -> gettext -> libiconv
実際に、この手順を踏んでみました。
最初のlibiconvコンパイルは正常に終わりました。
次に、gettextですが、configureにて、–with-libiconv-prefix=/home/takahiro/libiconv/localなどと、ライブラリのインストール先を指定しました。
しかし、gettextでは、ソースが大変多くて、かなりの時間がかかります。
ディレクトリの数も多いです。
gnulib-local, gettext-tools(gnulib-tests,tests,src,libgettextpo,gnulib-lib),libtextstyle(gnulib-local,lib,tests,adhoc-tests,examples), gettext-runtime(libasprintf,src,intl,gnulib-lib)
どれが要なのかと探ってみましたが、よくわかりませんでした。
サブディレクトリに分かれているので、更にわかりません。配下に、.libsディレクトリが生成されて、libgettextlib-0.20.1.soなどがそれらであることはわかりますが。。
さて、再度libiconvをビルドするわけですが、configureプログラムで –helpコマンドを発行しても、gettextの個所を指定するコマンドがわかりません。
はて?とここで、あくまでもオプションだからとあきらめました。
で、libiconv単体で行きましょうと、決めました。
次に、libiconvを利用するライブラリをビルドしようと、準備を始めました。
簡単にビルドは通ったのですが、実際に Android Studio のプロジェクトに組み込んで、
CMakeを利用してセットアップし、ビルドしたのですが、
実行すると、libiconv_openが見つからないというエラーに見舞われました。
シンボルは libiconv.soに見つかりますし、ヘッダにも宣言されていて、それを取り込んで、ライブラリの場所を
CMakeに知らせていますが、おかしいです。
次回、これをもう少し詳しく追及します。