Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-Android- qepcad, gnuplotのx86版コンパイル

f:id:jurupapa:20140927085024j:plain

マーシャラー

 

このMaxima on Androidというアプリの中にはnativeコードで書かれたプログラムが3つ含まれています。

MaximaについてはAndroid NDKをスタンドアローンで使うクロス環境をarm向けに構築したため、それを手直しすることで、位置独立形式に対応したり、x86版を作ることができました。

 

問題はGnuplotとQepcadです。arm版を作成する際には、この2つはScratchbox2という一種の仮想環境とarm用クロスコンパイラを組み合わせて、コンパイルして動かすことができました。ではx86版を作るにはどうしたらいいか、、、。

 

結構悩んだ末にあっけない解決策がありました。色々と調べていると、Android x86と普通のPC Linuxは静的リンクしたプログラムについてはバイナリコンパチである、ということが分かって来たのです。へ?バイナリコンパチ?それならと、32bitのDebianで、

#include <stdio.h>

main() {

   printf("hello world\n");

}

をtest.cに格納して、gcc -static test.cとして作ったa.outをAndroid x86エミュレータにadbで入れて、adb shellで入って起動すると、、、動くんです。ビックリです。

 

32bitのDebianでQepcadとGnuplotを静的リンクで作って、そのままエミュレータ上のMaxima on Androidに配置してみると、、、Qepmaxもplot2dも動いてしまったのでした。