静的ライブラリを共有ライブラリに変換しますか?

これを行います (もちろん、適切な -L を使用して)

gcc -shared -o megalib.so foo.o bar.o -la_static_lib -lb_static_lib

しませんか?


スタティック ライブラリ内のオブジェクトが -fPIC などなしでコンパイルされた場合、これを行うことはできません。


g++ -shared -o megalib.so foo.o bar.o -Wl,--whole-archive -la_static_lib -lb_static_lib -Wl,--no-whole-archive -lc_static_lib -lother_shared_object

gcc についてはよくわかりませんが、g++ の場合は、スタティック ライブラリのオブジェクトを共有オブジェクトに含めるために --whole-archive リンカー オプションを追加する必要がありました。 libc_static_lib.a および libother_shared_object.so にリンクしますが、megalib.so に全体としては含めません。