Linuxのコマンドラインアプリの移植方法について

852 views
Skip to first unread message

Yutaka Kato

unread,
Sep 24, 2010, 8:58:56 AM9/24/10
to 日本Androidの会
加藤といいます。
Linux(Ubuntu)で動くオープンソースのコマンドラインのアプリケーションをAndroidに
移植したく、トライしています。
色々、調べたところ、

androidのソースをダウンロードして、コンパイルする。
次に、androidのソースツリーにあるディレクトリ
prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
内のクロスコンパイラを使う

という方法で、hello, world程度の簡単なCプログラムは
コンパイル出来るようになりました。agccというperlスクリプトを
使えば、dynamic linkの実行ファイルを容易に生成できることも
分かりました。
しかし、自分がコンパイルしたいオープンソースのソースコードを
コンパイルしようとすると、ヘッダファイルやライブラリは、
ビルドで生成したandroidのどの部分を使えばいいか見当が
付かないです。

android + C言語 + クロスコンパイルでググると、NDKとか
JNIに関する情報が多く引っかかるのですが、これは、Cのソースから
ライブラリを生成するとか、JavaプログラムからCの処理を呼ぶという
ような理解で、自分がやりたいCの実行ファイルを生成するのとは
違う気がします。

Linuxで動くオープンソースのプログラムをAndroidに移植するには
どういう方針でいけばいいのでしょうか。ポインタの情報があったら、
どなたかご教示をお願いします。

hirokuma ueno

unread,
Sep 24, 2010, 9:04:32 AM9/24/10
to android-g...@googlegroups.com
こんばんは。

こちらなどいかがでしょうか。
NDK を使ってのビルドです。
http://blog.kmckk.com/archives/2918551.html

--
//ueno

Yuji Watanabe

unread,
Sep 24, 2010, 9:10:59 AM9/24/10
to android-g...@googlegroups.com
加藤さん、はじめまして。
渡辺といいます。

ちょっと見当ハズれなこと言ってるかもしれませんが、
基本的にAndroidでは、実行ファイル形式のアプリケーションはJavaでしか作成出来なかったと思います。

C言語で作成出来るのはライブラリのみだった思います。

なので、C言語で作成した実行ファイルをそのまま実行するのは不可能かと。

移植の方法としては、コマンドラインのコマンドをライブラリとして実装して、Javaから呼び出すとかですかね。

2010年9月24日21:58 Yutaka Kato <yut...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

--
*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
株式会社マーステクノサイエンス
開発部 商品開発課

エンジニア

渡辺 祐司

TEL:03-3352-8560(代表) 03-3352-8566(直通)
FAX:03-3352-8579
URL:http://www.mars-techno.co.jp
Email:watan...@mars-eng.co.jp
*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
━━━━━━━━━━━━━━━━━━━━━━
当社ソリューション&製品紹介ビデオ(音声あり)
「MTR-200」「MTR-120P」「HRI-1200」
==> http://www.mars-techno.co.jp/video/
━━━━━━━━━━━━━━━━━━━━━━
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2010年当社スローガン
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
【 WORK FOR FUN 】
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
楽しんで 働く!
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Yutaka Kato

unread,
Sep 25, 2010, 2:45:07 AM9/25/10
to android-g...@googlegroups.com
加藤です。

2010年9月24日22:04 hirokuma ueno <ueno...@gmail.com>:


> こんばんは。
>
> こちらなどいかがでしょうか。
> NDK を使ってのビルドです。
> http://blog.kmckk.com/archives/2918551.html

この方法で、コンパイルできました。
ありがとうございました。

Yutaka Kato

unread,
Sep 25, 2010, 2:58:51 AM9/25/10
to android-g...@googlegroups.com
加藤です。
渡辺さん、こんにちは。
アドバイスありがとうございます。

2010年9月24日22:10 Yuji Watanabe <watanabe...@gmail.com>:


> 加藤さん、はじめまして。
> 渡辺といいます。
>
> ちょっと見当ハズれなこと言ってるかもしれませんが、
> 基本的にAndroidでは、実行ファイル形式のアプリケーションはJavaでしか作成出来なかったと思います。
>
> C言語で作成出来るのはライブラリのみだった思います。
>
> なので、C言語で作成した実行ファイルをそのまま実行するのは不可能かと。
>
> 移植の方法としては、コマンドラインのコマンドをライブラリとして実装して、Javaから呼び出すとかですかね。

Runtimeクラスのexecメソッドを使って、コマンドを実行できないかなと実験してみましたが、
ダメでした。簡単なテストですが、Androidシステムにはcpコマンドがないようなので、

dd if=infile of=outfile

を、Androidアプリケーション内で、execメソッドで実行してみたのですが、
ファイルのコピーができませんでした。コマンド自体が実行できないのか、
パーミッションの問題なのかはよく分かりません。

ライブラリ化の方針でやってみようと思います。

Reply all
Reply to author
Forward
0 new messages