libtoolを使用して libfoo.a と libfoo.so の 2 つのオブジェクトにコンパイルされたライブラリ ( libfoo ) があります。
libtoolも使用して、すべての libfoo のコードを含む単一の共有ライブラリ (libbar.so) になる別のライブラリ ( libbar ) を作成する必要があります。
これを行うには、libbar が libfoo.so ではなく libfoo.aにリンクするように強制する必要があります。
私はautotools環境にいるので、標準のconfigure.inまたはMakefile.amルールを使用してこれを解決する必要があります。
configure.in のように、いくつかのことを試しました:
LDFLAGS="$LDFLAGS "-Wl,-Bstatic -lfoo -Wl,-Bdynamic"
これにより、常にリンク行に -Wl フラグが付きます。しかし -lfoo は消えて、先頭に絶対パス形式 ( /opt/foo/lib/libfoo.so ) で配置されています。
私も試しました:
LDFLAGS="$LDFLAGS "-L/opt/foo/lib libfoo.a"
または Makefile.am で:
libbar_la_LDADD = -Wl,-Bstatic -lfoo -Wl,-Bdynamic
と
libbar_la_LTLIBRARIES = libfoo.a
etc etc (非常に多くのバリエーションがあります!)
しかし、これを単独で解決するには、Autotools/Libtool について十分な知識がないことは間違いないと思います。私はそれについてネット上で情報を見つけることができませんでした.常にわずかに異なる問題です.