file
Androidデバイス(たとえば、より良いバージョン)にいくつかのコマンドをインストールしようとしていますが、ls
そのためのARMバイナリ(5TEアーキテクチャなど)を探していますが、ダウンロードする場所が見つかりません。 「arm ls binary」や「ls binary」のようなものをインターネットで検索すると、私が望むもの以外のすべてを得ることができます。
バイナリを見つけることができる場所はありますか?
答え1
AndroidデバイスにLinuxユーティリティをインストールする最も簡単な方法は、ディストリビューション全体をサブディレクトリにインストールすることです。 「一般」ディストリビューション(Debian、Arch、Fedoraなど)はGlibcに動的にリンクされたバイナリを提供しますが、Androidはそうではありません。を実行するには、Glibcのローダー()を使用する必要があります/lib/ld-linux*.so
。
これらのシステムを設定する簡単な方法はDebianを使用することです。ブーストに行く初期のDebianディレクトリツリーを構築し、それをAndroidデバイスに転送してから、apt-get
他の標準のDebianツールを使用してパッケージをインストールします。 Debian Wikiには、そのトピックに関する複数のページがあります。AndroidのChroot、Hottwo DebianのAndroid。
まず、Debootstrapをインストールします。 Debianまたは派生製品では
debootstrap
パッケージをインストールするだけです。他のLinuxまたは他のUnixバリアントではdebootstrapソースタールボールまたはGitで見ることができます。これはシェルスクリプトとサポートデータファイルです。デバイスがサポートしていることを確認するハードウェア浮動小数点。そうでない場合は、次のもの
armhf
と交換してください。 Android(またはLinuxカーネルを使用する他のデバイス)を確認してください。次の機能を備えたARMv7(またはARMv8)が必要armel
です。/proc/cpuinfo
thumbee
vfpv3
まだない場合は、インストールしてみてください忙しい箱Androidデバイスで。必ずしも必要ではありませんが、以下で便利に使用できます。 Debian バイナリパッケージを検索し
busybox-static
、Extract BusyBox 実行可能ファイルを使用しar p busybox-static_*_armhf.deb data.tar.gz | tar -xzf - ./bin/busybox
、バイナリをbusybox
Android デバイスに転送できます。以下では、BusyBoxがあるとします/vendor/bin/busybox
。Androidデバイスがext2 / ext3 / ext4(またはunix権限をサポートする他のファイルシステム、つまり非FAT)でフォーマットされたSDカードをマウントできる場合は、SDカードをUnix PCにマウントしてrootとして実行してください。 :
debootstrap --arch=armhf --foreign wheezy /media/sdcard/debian http://http.debian.net/debian
それ以外の場合は、root(または可能であればfakeroot)で次のコマンドを実行します。
sh -c 'debootstrap --arch=armhf --foreign wheezy /tmp/debian http://http.debian.net/debian && tar -zcf /tmp/debian.tar.gz -C /tmp debian'
/tmp/debian.tar.gz
これでAndroidデバイスに転送する必要があります。 adb(adb push /tmp/debian.tar.gz /
)または他の適切な方法でこれを実行してからTarballを解凍することができます(BusyBoxを使用tar
)。tar -zxvf /debian.tar.gz
快適なLinuxプログラム実行環境を構築してください。最も簡単な方法はchroot。私はDebianシステムがあり、
/media/sdcard/debian
BusyBoxがあるとします。シェルスクリプトを作成します。#!/vendor/bin/busybox sh LINUX_ROOT=/media/sdcard/debian alias bb=/vendor/bin/busybox unset LD_LIBRARY_PATH PATH SHELL export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # Bind-mount filesystems if not already done for d in /dev /media /proc /sys; do bb grep -q " $LINUX_ROOT$d " /proc/mounts || bb mount -o rbind "$d" "$LINUX_ROOT/$d" done for d in /data /system; do if ! bb grep -q " $LINUX_ROOT$d " /proc/mounts; then mkdir -p "$LINUX_ROOT/android/$d" bb mount -o rbind "$d" "$LINUX_ROOT/android/$d" fi done exec bb chroot "$LINUX_ROOT" /bin/bash "$@"
スクリプトを実行可能にし、
/vendor/bin
Android PATH または Android PATH の別の場所に配置します。 Linuxのインストールを完全に楽しむ前に、debootstrapを完了する必要があります。chrootで次を実行します。/debootstrap/debootstrap --second-stage
答え2
GNUページはcoreutils
プロジェクトのARMバイナリを提供していないようですが、見つかりました。このページ、バージョン8.14用にコンパイルされたバイナリを提供します。
私は直接ダウンロードし、ls
次のメタデータはバイナリに付属しています。
$ file ls
ls: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), stripped
これはARMシステムに適している必要があります。 Braatchleyが言ったように、最善のアプローチは、おそらくcoreutils
ARMターゲットに合わせてコンパイルすることです。私の場合、coreutils
ARMシステム(Raspberry Pi、ARM6L)で直接コンパイルしましたが、すべての互換性チェックがスムーズに行われました。