• 締切済み

Unsatisfied code symbol エラーについて

UNIX上でcのプログラムを作成しています。 OSはHP-UX B.11.23 U ia64 (td)です。 共有ライブラリ(~.sl)を作成したのですが、 これを実行モジュール(a.out)にリンクしてコンパイルして、a.outを実行すると、 エラーになってしまいます。 エラーの内容は、 /usr/lib/hpux64/dld.so: Unsatisfied code symbol 'xxxxx' in load module '/.../...~/a.out'. というもので、ライブラリ内にあるはずのxxxxxをa.outで使用しているのですが、 これが見つからないというエラーのように思えます。 ライブラリ内にはいくつか関数を用意していて、そのほかの関数は普通に使えています。 ライブラリを作成するときにincludeファイルを用意していますが、 その中でexternで関数の宣言をしていて、 xxxxxが他の関数と異なった設定をしているとは思えません。 このような場合、エラーの原因としてどのようなことが考えられるでしょうか? ほとほと困っています…。 どなたか解決方法をご教授願います。 またライブラリに含まれる関数を表示させるUNIXコマンドってありましたでしょうか? もしご存知でしたらあわせて教えていただけると助かります。 何か必要な情報で書き足りないものがありましたら、補足いたしますのでご指摘ください。 よろしくお願いいたします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

最後だけ: nm でライブラリ内のシンボルが全部わかるんじゃなかったかな. まあ, 関数だけではないんだけど.

wizard-mam
質問者

お礼

自己レスです。すみません。 nmでno symbolになってしまうのは、makeファイルで、 コンパイルした後にstripをかけてしまっていたからでした。 これを外したらnmで情報が表示されました。 しかし表示された中にxxxxxも含まれていて、他の使える関数と同様にちゃんとGLOBにもなっていたんですが、やはりエラーになるのは変わりません。 根本的に解決していないので、まだまだアドバイスお願いします。

wizard-mam
質問者

補足

早速の回答ありがとうございます。 エラーが発生するライブラリに対してnmはやってみたのですが、 "no symbols"と表示されてしまうのです。 作成したのは共通関数ライブラリなのですが、 正常に機能している関数もあるのに…です。 nmに表示させるためにコンパイル時にオプションとか必要だったりするんでしょうか? 質問ばかりですみません。何かご存知でしたら追加回答お願いいたします…。

関連するQ&A

専門家に質問してみよう