ページ 11

soファイルの作り方

Posted: 2013年11月03日(日) 11:45
by Androider
ソースからビルドしてsoファイルを作るのではなく、
すでにコンパイルされた.aファイルや.oファイルがある状態から、
.soファイルを作るにはどのようなコマンドがあるのでしょうか?
OSはmac / linuxです。

ソースからsoファイルにするのは「gcc -shared」でいけるという事は調べてわかりました。

すいませんc++初心者なんで分かってないです。

最終的にはAndroidに上記のコマンドをインストールして、
Androidの実機上で.oファイル、.aファイルからsoファイルを生成するのが目的です。

Android実機上に入れるので、gccコマンドだとインストールが大変そうなので、
もっと依存関係があまりないシンプルなコマンドがあればいいかなとは思っています。

Re: soファイルの作り方

Posted: 2013年11月03日(日) 12:54
by h2so5
試してないですが検索したら出てきた方法
http://goo.gl/F7zU6v

Re: soファイルの作り方

Posted: 2013年11月03日(日) 15:41
by ISLe
Linuxのリンカを呼び出すのはldコマンドですが、実体はディストリビューションに依存します。

Re: soファイルの作り方

Posted: 2013年11月03日(日) 17:01
by Androider
ar -x libaaa.so
ってしましたが、
ルートディレクトリが指定されていないため、
/387
とかルートに解凍されてしまいます。
arコマンドを発行したディレクトリに解凍して欲しかったのですが、
ar -x で出力先ディレクトリって指定できるのでしょうか?

Re: soファイルの作り方

Posted: 2013年11月03日(日) 17:39
by ISLe
arコマンドにディレクトリパスを扱う機能はないはずですが。
というかなぜarコマンドの対象がsoファイル?

Re: soファイルの作り方

Posted: 2013年11月03日(日) 17:43
by Androider
すいません.aファイルです。
以下のコマンドで中身を確認すると/(スラッシュ)が入っているので、
そのまま/(ルート・ディレクトリ)に解凍されようとしているのだと思います。

$ ar -t libbox2d.a
/208
/234
/261
/290
/310
/329
b2GearJoint.o/
b2Joint.o/
b2MouseJoint.o/
/348
b2PulleyJoint.o/
/368
b2RopeJoint.o/
b2WeldJoint.o/
b2WheelJoint.o/
b2Body.o/
/387
b2Fixture.o/
b2Island.o/

Re: soファイルの作り方

Posted: 2013年11月03日(日) 18:11
by ISLe
libbox2d.aに日本語とか使ったファイル名のファイルが含まれていませんか?
多言語対応のarコマンドを使う必要があるのではないかと。