0

ライブラリ xxx をライブラリ yyy にリンクしようとしています。xxx を配信するときに xxx と一緒に yyy をパッケージ化する必要がないように、静的にリンクしたいと考えています。サードパーティから提供された yyy の 2 つのバージョンがあります: libyyy.so と libyyyln.a。ここでは、-lyyyln でリンクします。

リンクしてもエラー メッセージは表示されません。「ldd libxxx.so」を実行すると、yyyln への依存関係が表示されません。しかし、「ldd -r libxxx.so」は、yyy からのシンボルが解決されていないことを示しています。「nm libxxx.so」は、yyy からのこれらのシンボルが UNDEF であることを示しています。

私は何が欠けていますか?

Edit1:「-l /fullpath/libyyyln.a」で最終的に動作させることができました

4

5 に答える 5

3

-Bstatic静的リンクが必要なライブラリの前に配置します。詳細については、Solaris Linker and Libraries Guideを調べてください。

于 2009-05-13T22:45:53.020 に答える
1

Sun Studio フォーラムでこの質問をして、Sun Studio コンパイラ チームから直接回答を得ることができたはずです。

Sun Studio フォーラム(C、C++、Fortran、およびツール用)

于 2009-05-17T07:32:02.847 に答える
0

これが役立つかどうかを確認してください:http: //fortran-2000.com/ArnaudRecipes/sharedlib.html

于 2009-05-13T19:43:57.623 に答える
0

gccを使用していると思います。デフォルトでは、gcc は可能であれば共有ライブラリ (.so) を使用するため、オプション -static を使用して強制的に静的にリンクする必要があります。

編集: 申し訳ありませんが、sunstudio がリンクしようとしているライブラリの名前だと思っていました。Sun Studio にはコンパイラが含まれていることを忘れていました。ただし、sun studio にも同様のオプションがあるはずです。

于 2009-05-13T19:24:28.763 に答える
0

「-l /fullpath/libyyyln.a」を使用して、最終的に機能させることができました

-Bstatic と -Bdynamic を試してみましたが、成功しませんでした。解決策は、上に書かれているのと同じくらい簡単でした。もっと前に考えておくべきでした。

于 2009-05-27T20:19:08.673 に答える