14

Xcode 4.4 がインストールされた Mountain Lion を実行している Mac に somelib.a というサードパーティ ライブラリがあるとします。そこから somelib.dylib という動的ライブラリを取得したいと考えています。適切な Linux コマンドは次のようになります。

g++ -fpic -shared -Wl,-whole-archive somelib.a -Wl,-no-whole-archive -o somelib.so

-whole-archive と -no-whole-archive はリンカーに渡されます。Macで同等のことを行うと:

g++ -fpic -shared -Wl,-whole-archive somelib.a -Wl,-no-whole-archive -o somelib.dylib

ld は次のエラーで失敗します。

ld: unknown option: -whole-archive

OSX の ld は GNU ld とは異なるようです。目的の結果が得られるようにするには、上記のコマンドをどのように変更する必要がありますか?

前もって感謝します!

4

3 に答える 3

3

ldマニュアルによると-noall_load、デフォルトであり、無視されます。(これを使用すると、エラー メッセージが表示されますld: warning: option -noall_load is obsolete and being ignored:)

どうやら、-all_load1 つのライブラリのみに適用する方法は次のとおりです。

-Wl,-force_load,somelib.a
于 2015-05-06T05:47:58.457 に答える