私は自分のデバイス用のネイティブ アーム android gcc/binutils のクロスビルドに取り組んでいます...特に KBOX で実行します (libfakechroot を使用して Android ターミナル アプリ内に標準の UNIX ファイルシステムを作成します)。gcc/binutils のいくつかのバージョンを正常に構成して作成しましたが、それらをデバイスに転送すると、次の 2 つのいずれかが発生します。
a) クロスビルドされたネイティブ コンパイラでコンパイルされたバイナリ (基本的には Hello World) は、セグメンテーション エラーをスローします。b) gcc および bintutils オプションを指定してクロスビルド ネイティブ コンパイラ ツールを実行すると、セグメンテーション フォールトがスローされます。
膨大な数の検索結果からさまざまな構成オプションを組み合わせて何時間も試しましたが、どれもうまくいきませんでした。私の次の攻撃計画は、(どういうわけか) gcc で Bionic を構築する方法を理解することです...しかし、誰かが以下の詳細で私が見逃した何かを見てくれることを願っています
詳細
クロス コンパイル ツールチェーン: API レベル 14 をターゲットとする make-standalone-toolchain.sh スクリプトを使用して Android NDK からビルドされた GCC 4.7.0
ネイティブ ツールチェーン: devtoolset リポジトリからの GCC 4.7.0
ビルド システム: CentOS 6.2
最新の binutils 構成オプション
sudo sh ../binutils-2.23/configure --build=x86_64-redhat-linux --host=arm-linux-eabi --
disable-option-checking --enable-ld --enable-languages=c --disable-gold --disable-fortran
--disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libada
--disable-werror --disable-multilib --with-build-time-tools=/project/arm-cc/bin
CC=arm-linux-androideabi-gcc CFLAGS='-Wall -O -mandroid -mbionic'
LDFLAGS='-Wl,--entry=main,--dynamic-linker=/system/bin/linker -lc -lgcc'
LIBCFLAGS='-O2 -mandroid -mbionic' LIBCPPFLAGS='-O2 -mandroid -mbionic' LIBCXXFLAGS='-O2 -mandroid -mbionic -fno-implicit-templates'
LIBS='-lc -lgcc'
スペースを節約するためにツールチェーンの変数を除外する
最新の GCC 構成オプション
./gcc-4.7/configure --build=x86_64-redhat-linux --host=arm-linux-eabi --disable-ld
--with-as=/opt/andv1b/usr/local/arm-linux-eabi/bin/as
--with-ld=/opt/andv1b/usr/local/arm-linux-eabi/bin/ld
--enable-version-specific-runtime-libs --enable-shared --enable-languages=c
--disable-bootstrap -disable-gold --disable-fortran --disable-libssp
--disable-libquadmath --disable-libquadmath-support --disable-libada --disable-werror
--disable-multilib --disable-libgomp --disable-cloog
--with-build-time-tools=/opt/centos/devtoolset-1.1/root/usr/bin
CC=arm-linux-androideabi-gcc
CFLAGS='-Wall -O -mandroid -mbionic'
LDFLAGS='-Wl,--entry=main,--dynamic-linker=/system/bin/linker -lc -ldl -lgcc -lm'
LIBCFLAGS='-O2 -mandroid -mbionic' LIBCPPFLAGS='-O2 -mandroid -mbionic' LIBCXXFLAGS='-O2 -mandroid -mbionic -fno-implicit-templates' LIBS='-lc -ldl -lgcc -lm -lsupc++ -lgnustl_shared'
スペースを節約するためにツールチェーンの変数を除外します。