2011/07/18

Can't locate unicore/PVA.pl

SL4A + Perl でスクリプトを書いていじってたら、日本語(マルチバイト)があった部分で、
Can't locate unicore/PVA.pl in @INC (@INC contains: ~@INCのパス~) at /data/data/com.googlecode.perlforandroid/files/perl/5.10.0/utf8_heavy.pl line 97, line xxx.
というメッセージが出力された。これはhide_o_55氏の
SL4AのPerl for Androidでマルチバイト文字を使う際に落ちる件
に書かれている手順でAndroid.pmのdo_rpc()を修正することで動くようになる。

しかし、日本語をファイルへ出力しようとすると、
Wide character in print at スクリプト名 line xxx, line yyy.
となり内部エンコードのまま出力されている。EncodeがあればいいのだがSL4A + Perl にはない。コンパイルするのも手間がかかりそう。
ということで、unicore/PVA.pl を用意してみる。

SL4AのPerlにはPVA.plを作成するのに必要なモジュールの一部がないので実行はLinux PCで。
SL4AのPerlのバージョンが5.11.0なので、http://www.cpan.org/src/5.0/からPerl 5.11.0のソースをダウンロードして展開。
cd perl-5.11.0/lib/unicore
perl ./mktables
cd ..
と実行してPVA.plが作成されたことを確認。このファイルだけあればOKというわけではないので、unicoreディレクトリをSDカード(/sdcard/com.googlecode.perlforandroid/extras/perl/site_perl/)にコピー。
これで今のところAndroid.pmのdo_rpc()を修正しなくても、うまく動いている模様。

2011/05/23

Androidのターミナルでsl

歌代氏が、sl-jslinux - hatena.utashiro.comでjslinux向けにslを動く用に修正されたソースを公開されていた。
vt100 環境限定となっている。Androidのターミナルでも動くかも。
Android NDKの環境構築も兼ねて、コンパイルしてみる。

まずAndroid NDK | Android Developersから、Linuxでコンパイルするのでandroid-ndk-r5b-linux-x86.tar.bz2をダウンロード。
ダウンロードしたファイルをホームディレクトリで展開。

コンパイル用にディレクトリ(~/sl/jni/)を作成。

slコマンドのソースの
 #include <tcclib.h>
となっている行を
 #include <stdio.h>
に修正し、sl.cとして~/sl/jni/に保存。

~/sl/jni/Android.mk を以下の内容で作成。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := sl
LOCAL_SRC_FILES := sl.c
include $(BUILD_EXECUTABLE)
~/sl/jni/に移動してコンパイル。

$ ~/android-ndk-r5b/ndk-build
と入力すると
Compile thumb  : sl <= sl.c
Executable     : sl
Install        : sl => libs/armeabi/sl
と出力された。~/sl/libs/armeabi/に移動し、

$ file sl
と入力すると、
sl: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
と出力された。これをIS01に送って実行してみる。


slコマンドが動いた。

2011/01/26

Android用のwgetを導入

以前インストールした Busybox for android のwgetでは名前解決ができないので、Android用にコンパイルされたwgetを Jacob Hoffman-Andrews' Android stuff からダウンロードしてIS01にインストール。

パッチを見ると思ったより修正が必要だな、と。

Zaurusではwgetのバージョンが1.10.2の時にクロスコンパイルをしてみたけど、当時のメモを見るとソースの修正はなく、configure時にいくつかオプションを指定してmakeしていた模様。

GNU関係のソフトをAndroidに入れようとすると、それなりに修正が必要なのかな。

#wgetを入れたのは、LWPを入れるのが大変そうだったので。