dポイントプレゼントキャンペーン実施中!

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コマンドってありましたでしょうか?
もしご存知でしたらあわせて教えていただけると助かります。
何か必要な情報で書き足りないものがありましたら、補足いたしますのでご指摘ください。
よろしくお願いいたします。

A 回答 (1件)

最後だけ:


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

この回答への補足

早速の回答ありがとうございます。

エラーが発生するライブラリに対してnmはやってみたのですが、
"no symbols"と表示されてしまうのです。
作成したのは共通関数ライブラリなのですが、
正常に機能している関数もあるのに…です。

nmに表示させるためにコンパイル時にオプションとか必要だったりするんでしょうか?
質問ばかりですみません。何かご存知でしたら追加回答お願いいたします…。

補足日時:2006/12/12 13:06
    • good
    • 0
この回答へのお礼

自己レスです。すみません。

nmでno symbolになってしまうのは、makeファイルで、
コンパイルした後にstripをかけてしまっていたからでした。
これを外したらnmで情報が表示されました。

しかし表示された中にxxxxxも含まれていて、他の使える関数と同様にちゃんとGLOBにもなっていたんですが、やはりエラーになるのは変わりません。

根本的に解決していないので、まだまだアドバイスお願いします。

お礼日時:2006/12/12 14:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!