• ベストアンサー

コンパイルで未定義のシンボル

よろしくお願いします。 SunOS5.6ではCプログラムで以下の関数がメイクで未定義のシンボルとしてエラーになってしまいます。 sigblock() sigmask() sigsetmask() SunOS5.8ならば問題なくメイク可能なのですが、SunOS5.6ではどれかのLIBをリンクしなければならないのでしょうか? それともこれらの関数は実装されていないのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

コンパイルが通って リンクでエラーになってるから 必要なLIBがリンク時に参照されていないということなんでしょうね。

bunarin
質問者

お礼

その通りです。ucbというLIBをリンクして解決しました。ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

#include <signal.h> はしてるんですよね。 signal.hを検索して その中で 実際に定義されているか調べてみてはどうでしょうか? また signal.hにない場合(ちょっと考えにくいですが) 関数名で*.hをgrepしてみてはどうでしょう?

bunarin
質問者

補足

早速の回答ありがとうございます。助かります。 /usr/include/sys/signal.hにsigmask()だけはありました。 実行はこんなかんじです。 >more r.c #include <stdio.h> #include <sys/signal.h> main() { sigblock( sigmask( SIGALRM ) ); sigsetmask( sigmask( SIGALRM ) ); } >/opt/SUNWspro/bin/cc -g r.c -o mdl 未定義の 最初に参照している シンボル ファイル sigmask r.o sigsetmask r.o sigblock r.o ld: 重大なエラー: シンボル参照エラー。mdl に書き込まれる出力はありません >

すると、全ての回答が全文表示されます。

関連するQ&A