私の答えは、 Geneの答えと連携して最も効果的です。
./configure
C
の構成ファイルの作成は、各テストの小さなコード スニペットのコンパイル (および場合によっては実行) に基づいています。各テストが成功すると、config.h.in
テンプレートに対応する変数が設定され、config.h
. コンパイルのみのテストは、クロスコンパイル環境で正常にテストできます。ただし、コンパイルおよび実行テストは、クロスコンパイル環境では実行できません。
したがって、変換プロセスを開始するには、環境変数CPP
、CC
、LD
およびその他のツール エイリアスをツールのクロスコンパイラ セット (おそらく のものNDK
) に設定してから、 を実行する必要があります./configure
。これが完了したらconfig.h
、ターゲット環境に合わせて を修正する必要があります。これは、最も重要で最もエラーが発生しやすい手順です。
に関しては、簡単に変換できるAndroid.mk
非常に近い形式に従います。とは から生成されるため、Makefile.am
無視できます。Makefile.in
Makefile
Makefile.am
ファイル(バージョン 5.11)の例を挙げると、次のオプションを指定して configure を実行しました。
./configure --host arm-toshiba-linux-androideabi --build x86_64-linux-gnu \
--prefix=/data/local/ host_alias=arm-linux-androideabi \
"CFLAGS=--sysroot=~/ndk/platforms/android-8/arch-arm -Wall -Wextra" \
"CPPFLAGS=--sysroot=~/ndk/platforms/android-8/arch-arm" \
CPP=arm-linux-androideabi-cpp
次のステップはsrc/Makefile.am
、以下のようにすることでした。
MAGIC = $(pkgdatadir)/magic
lib_LTLIBRARIES = libmagic.la
include_HEADERS = magic.h
bin_PROGRAMS = file
AM_CPPFLAGS = -DMAGIC='"$(MAGIC)"'
AM_CFLAGS = $(CFLAG_VISIBILITY) @WARNINGS@
libmagic_la_SOURCES = magic.c apprentice.c softmagic.c ascmagic.c \
encoding.c compress.c is_tar.c readelf.c print.c fsmagic.c \
funcs.c file.h readelf.h tar.h apptype.c \
file_opts.h elfclass.h mygetopt.h cdf.c cdf_time.c readcdf.c cdf.h
libmagic_la_LDFLAGS = -no-undefined -version-info 1:0:0
if MINGW
MINGWLIBS = -lgnurx -lshlwapi
else
MINGWLIBS =
endif
libmagic_la_LIBADD = $(LTLIBOBJS) $(MINGWLIBS)
file_SOURCES = file.c
file_LDADD = libmagic.la
CLEANFILES = magic.h
EXTRA_DIST = magic.h.in
HDR= $(top_srcdir)/src/magic.h.in
BUILT_SOURCES = magic.h
magic.h: ${HDR}
sed -e "s/X.YY/$$(echo @VERSION@ | tr -d .)/" < ${HDR} > $@
そして、これから作成しますAndroid.mk
。
最後の最も重要なステップはconfig.h
、ターゲット システムの状態を正確に反映するように を変更することでした。これは、主にconfigure.logを調べ、ヘッダーを調べ、Googleを「呼び出す」ことを含む、回避策を提供できない手動のプロセスになります。この労力の成果はXDAで入手できます。