スタティックライブラリ←→シェアードライブラリ

*.aを*.soに変換する方法。

ld --whole-archive -shared -o libXXX.so libXXX.a

でどうにかなるらしい。ちょっとやってみたら大丈夫っぽかった。
# じゃあ今までつけてた-fPICって何だったんだろう…

逆に、*.soを*.aに変換するのに、

ar cru libXXX.a libXXX.so

ってのはアリなのかなぁ。こっちは試して(リンクしてみて)ないけど、アリであってほしい。

そうすると*.aと*.soの違いは何なのよって話になる。あー、フォーマットが違うのはわかってるよ。*.aは単に*.oのアーカイブだし、*.soは一種の実行ファイルみたいなもん(?)だけど、でも相互に変換できるものであるならば、*.soをstatic linkに使ったり、*.aをdynamic linkに使うことができても文句は言ってほしくなくて、ユーザにシームレスに見せろよって話になってしまう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です