*.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に使うことができても文句は言ってほしくなくて、ユーザにシームレスに見せろよって話になってしまう。