2009-05-13 8 views
0

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

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

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

EDIT1:私はgccを使用していると仮定し、それは "-l /fullpath/libyyyln.a"

答えて

0

で最終的に仕事を得ることができました。デフォルトではgccは共有ライブラリ(.so)を使用できるので、静的にオプション-staticにリンクする必要があります。

編集:申し訳ありませんが、私はsunstudioがリンクしようとしているライブラリの名前だと思っていましたが、Sun Studioにコンパイラが含まれていることを忘れていました。しかし、サン・スタジオには同様のオプションが必要です。この場合に役立ちます

1

あなたが、私はそれを得ることができたのSun Studioコンパイラチームから直接

Sun Studio Forums(C、C++、Fortranの、およびツール用)

0

をのSun Studioフォーラムでこの質問をしてもらって答えている可能性が最終的に "-l /fullpath/libyyyln.a"で作業する

私は-Bstaticと-Bdynamicで成功しませんでした。その解決策は、上記のような単純なものでした。私はそれを早期に考えていたはずです。