ラベル FDclone の投稿を表示しています。 すべての投稿を表示
ラベル FDclone の投稿を表示しています。 すべての投稿を表示

2018/06/14

Termux上でFDcloneを動かす

2019/05/25 追記

Android 9に対応したFDclone 3.01iがリリースされました。
pkgコマンドでclang, make, ncurses-dev (2019/09/16 statさんの指摘により修正。2019/07の終わりに*-devなパッケージは無くなりました。)とそれらが依存する必要なパッケージをインストール後、makeコマンドでコンパイルできます。

2019/09/16 追記

ncurses-devに含まれているヘッダーファイルなどはncursesのパッケージに含まれるようになりました。
また、ncursesはTermuxの初回起動時にインストールされるので、FDcloneのコンパイルに追加で必要になるパッケージはclang, make (とこれらが依存するbinutils libffi libllvm ndk-sysroot) になります。

2019/09/16 追記ここまで

以下は古い情報です。

2019/05/25 追記ここまで


Termux上でFDcloneを動かそうとした場合、TermuxのAPTリポジトリにFDcloneは無いので自前でコンパイルする必要があります。
makeコマンド一発でコンパイルできればよかったのですが、FDcloneのInstallにもある通り、FDcloneはAndroid 4.xまでの対応となっており、Android 5.0からのサポートされた64bit環境でのコンパイルには対応していません。
ソースを修正してみたところ、少しの修正で済んだのでパッチを上げておきます。

Termuxのバージョン: 0.60
FDcloneのバージョン: 3.01g
端末は
Xperia X Compact (Android 8.0.0 (CPU ABI: arm64-v8a))
Android エミュレータ (Google Play Inten x86 Atom_64 System Image API Level 28 Revision 3)
でコンパイルし、FDcloneが起動するところまで確認しています。

パッチ FD-3.01g-android-termux.patch

FDclone コンパイル手順

コンパイルに必要なパッケージをインストールします。

$ pkg install clang make ncurses-dev

clangを動かすにあたり必要なパッケージ (binutils, libandroid-support-dev, libffi, libllvm, ndk-stl, ndk-sysroot) もインストールされます。

FDcloneのページからダウンロードしたFD-3.01g.tar.gzを展開し、

$ tar xf FD-3.01g.tar.gz

パッチを当てます。

$ patch -p1 < FD-3.01g-android-termux.patch

FDcloneのソースのあるディレクトリに移動してコンパイルして

$ cd FD-3.01g
$ make CC=clang PREFIX=$PREFIX CONFDIR=$PREFIX/etc

インストール。マニュアルは不要なので、バイナリのみインストールしています。マニュアルもインストールする場合は install-bin を install にします。(2019/05/08訂正)

$ make LN="ln -s" install-bin

2019/05/08 訂正
マニュアルもインストールする場合はMANTOPの場所を指定し、install-manを追加します。

$ make LN="ln -s" MANTOP=$PREFIX/share/man install-bin install-man

2019/05/08 訂正ここまで

Android 6.0からハードリンクの作成はできなくなっているのでlnコマンドにオプション "-s" を追加してシンボリックリンクを作成するようにします。
これでFDcloneを動かすのに必要なファイル(fd, fd-cat.C, fd-cat.ja, fd-dict.tbl, fd-unicd.tbl, fdsh)が /data/data/com.termux/files/usr/bin/ にインストールされます。


2018/06/15 追記
FDcloneを起動した状態での上下のスワイプはカーソルの上下になるので、Google 日本語入力のように左右のカーソルキーがあるソフトウェアキーボードを使用すれば、ハードウェアキーボードが無くても結構使えます。

2018/08/29 追記
Google 日本語入力の場合、カーソルキーのフリックでカーソルの上下もできることを教えていただきました。


2018/08/15 追記
2018/08/11にリリースされたFDclone 3.01hですが、FD-3.01h.tar.gzを展開したディレクトリに移動後、patchコマンドのオプションを "-p2" に変更しパッチを適用すればコンパイルできます。

$ tar xf FD-3.01h.tar.gz
$ cd FD-3.01h
$ patch -p2 < ../FD-3.01g-android-termux.patch
$ make CC=clang PREFIX=$PREFIX CONFDIR=$PREFIX/etc
$ make LN="ln -s" install-bin

2017/11/20

Termuxの備忘録

昔書いた、
Android上で動くgccの導入
WgetをAndroid NDKでコンパイル
Android用のnkfをコンパイル
Android用のnkfをコンパイル その2
がたまにアクセスがあるので、自分の備忘録も兼ねて。

Android 5.0以上ならターミナルエミュレーターはTermuxの使用をお勧めします。


インストールと初期設定など


まずGoogle Playからインストール → Termux

使い方はTermuxのThe Termux Wikiを見ればOK

忘れがちなキーの割り当て(Touch Keyboardより)
・Volume Up + W → Up arrow key
・Volume Up + A → Left arrow key
・Volume Up + S → Down arrow key
・Volume Up + D → Right arrow key

ボリュームダウンが[Ctrl]キーに割り当てられてるけど、操作し辛いのでナビゲーションドロワーから「KEYBOARD」を長押しして、「Extra keys view」を表示しておく。(Touch Keyboardより)
バージョン 0.62から Extra keys view は Volume UP + Q で表示/非表示可能 (2018/06/24 追記)
Volume UP + Q での Extra keys view の表示/非表示は以前からあったようです(2018/06/27 追記)


Termux-setup-storage にある通り、ストレージの初期設定を行う。

あとはDebian系のディストリビューションと同じ感覚で、

$ apt update

で利用できるパッケージリストの更新。

$ apt upgrade

で新しいパッケージに更新。

以上で、Termuxの準備は完了。


パッケージのインストール


・Clang
以前はgccのパッケージがあったのですが、現在ではClangになっています。(clangのパッケージに含まれるgccはclangへのリンクになっています。)

$ apt install clang

でインストールされます。

・Wget
Termuxはbusyboxがインストールされているので、busyboxで機能が足りているならそのまま使用、機能が足りないようであれば、パッケージのインストール。

$ apt install wget

でインストールされます。

・nkf
Termuxのパッケージにはないので、コンパイルします。
nkf Network Kanji Filterからソースをダウンロードして、ファイルの展開後、config.h の

#define DEFAULT_CODE_UTF8

を有効にして

$ make

で実行ファイルが作成されます。

2018/06/16 追記
FDcloneのコンパイル、インストール方法は Termux上でFDcloneを動かす に書きました。

2012/02/19

Android上で動くgccの導入

2017/11/20 追記
Android 5.0以上ならTermuxでClangを使用できます → Termuxの備忘録
追記ここまで


前からAndroid上で動くgccが欲しいなぁと思っていたのですが、半年以上前にciel氏(@cielavenir)が作成されていました。凄い。

Marijuana氏のツイートを見て、同じくFDcloneをAndroid上で動かしたいな、と思っていたところ、ciel氏がFDcloneをビルドして下さったところから、Android上で動くgccがあることを知りました。

ciel氏のDropboxで共有されているファイルの一覧から以下のファイルをダウンロード。
  • android_gcc_r2a.tar.bz2
  • android_gcc_supplement.tar.bz2
adbでIS01に接続し、/data/local/に「gcc」ディレクトリを作成(パーミッションは775)後、2ファイルを展開。
/data/localのパーミッションが771なので、connect botで操作する時もファイルの一覧が見られるようにパーミッションを775に変更。

普段はconnect botでシェルをbashにしているので、~/.bashrcにgccなどへのパスの設定とライブラリのパスの設定を追加。

PATH=$PATH:/data/local/gcc/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/gcc/lib
簡単なソースを書き、コンパイルして作成された実行ファイルが動くことを確認。


FDcloneの導入は、Marijuana氏のサイトとrattcv氏のブログ(2012/02/17)を参考にして下さい。

IS01ではciel氏のビルドされたFDcloneだと
reloc_library[1302]: 9496 cannot locate 'killpg'...CANNOT LINK EXECUTABLE
となり、動作しなかったので、自分でビルドすることに。
#Android2.xと1.6の差か…

2012/05/19 追記
Android NDKのヘッダーファイルを見るとkillpg()がサポートされているのはAPIレベルが8以上、つまりAndroid 2.2以上のようです。