• ベストアンサー

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

よろしくお願いします。 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

  • 未定義シンボルエラー

    現在、HPサーバからAIXサーバへのアプリ移行中なのですが、 未定義シンボルエラーが発生し対応方法に 困っています。 ご教授のほど、よろしくお願いいたします。 未定義シンボルエラーの関数は、 .iconv、iconv_openの2つです。 このアプリの共通部分でオブジェクトを作成していて、この関数(.iconv、iconv_open)のシンボルをアーカイブファイルに書きにいっています。 このiconvを使用する機能のリンク時にこのアーカイブファイルを 参照しているみたいなのですが、未定義シンボルエラーになり エラーになってしまいます。 アーカイブファイルの状態は、未定義シンボルです。(nmコマンドで 調べました)HP、AIX共に、同様。ですが、HPではすんなり通ってしまいます。 よろしくお願いいたします。

  • Pro*Cで動的SQLを実現する為のライブラリ関数はどのファイルに入っているのでしょうか?

    こんにちわ。 UNIXのC++でPro*Cを使って動的SQLを使ったプログラムを作っています。 プログラムコードは出来上がっていて、単独コンパイルは通るのですが、 実行形式のプログラムを作る時のリンクで「未定義のシンボル」として 以下の4ライブラリ関数がエラーになります。 sqlald()関数、sqlprc()関数、sqlnul()関数、sqlclu()関数 これはおそらく、リンクする際にこれらの関数が含まれているライブラリを リンクできていないだけなのではないかと思っているのですが、 肝心のライブラリがどこのどれなのかがわかりません。 どなたかご存知の方がいらっしゃいましたら、教えてください。 もしかして、プログラム中でもこれらの関数をextern する以外に 何か必要なのでしょうか?

  • Pro*Cのリンクエラーがどうにもならないですっ!!

    こんにちわ。 UNIXのC++でPro*Cを使って動的SQLを使ったプログラムを作っています。 プログラムコードは出来上がっていて、単独コンパイルは通るのですが、 実行形式のプログラムを作る時のリンクで「未定義のシンボル」として 以下の4ライブラリ関数がエラーになります。 sqlald()関数、sqlprc()関数、sqlnul()関数、sqlclu()関数 これはおそらく、リンクする際にこれらの関数が含まれているライブラリを リンクできていないだけなのではないかと思っているのですが、 肝心のライブラリがどこのどれなのかがわかりません。 どなたかご存知の方がいらっしゃいましたら、教えてください。 もしかして、プログラム中でもこれらの関数をextern する以外に 何か必要なのでしょうか? PS.教えてgooのプログラミング→C/C++のカテゴリにも質問させていただいて  います。   でもわからないので、誰か助けて~!!という感じです!!

  • コンパイルはできるが、リンクエラーがでます。

    WritePwrScheme()を使ったプロセスを作ろうとしています。コンパイルは問題ないのですがリンク時にその関数が未解決のシンボルとして表示されます。これってpowrprof.libが悪いのでしょうか?それともpowrprof.dll? そうだとしたらどこで入手できるのでしょうか? お分かりの方、回答をお待ちしております。

  • DB2付きのC言語がコンパイルできません。

    CはMicrosoftVisualStudio2012 DBはIBM DB2 です。 同じ環境でコンパイル実行できていたのに、 PCがおかしくなったのでフォーマットして入れなおしたらコンパイルができなくなりました。 よろしくおねがいします。 ソースはこちらです。 #include <stdio.h> exec sql include sqlca; void main() { exec sql connect to sample; if(SQLCODE!=0) { printf("SQL CONNECT %d", SQLCODE); } else { exec sql update Test1 set col2 = 'bababa'; if(SQLCODE!=0) printf("SQL UPDATE %d", SQLCODE); } exec sql connect reset; } コンパイルコマンドです db2 connect to sample db2 prep Test11.sqc bindfile db2 bind Test11.bnd cl -Z7 -c -W2 -D_X86_=1 -DWIN32 -I"c:\Program Files\IBM\SQLLIB\include" Test11.c link -debugtype:cv -outTest11.exe %1.obj "c:\Program Files\IBM\SQLLIB\lib\db2api.lib" エラーメッセージです Test11.obj : error LNK2019: 未解決の外部シンボル _sqlaaloc@16 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlacall@20 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlasetdata@24 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlastop@4 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlastrt@12 が関数 _main で参照されました。 Test11.exe : fatal error LNK1120: 5 件の未解決の外部参照

  • 「外部シンボル "_DirectDrawCreate@12" は未解決」って???

    外国のサイトで拾ってきたVisual C++のソースコードをコンパイルしたら 次のようなエラーが出ました。 --------------------------------- (1) test.obj : error LNK2001: 外部シンボル "_DirectDrawCreate@12" は未解決です (2) nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__endthreadex" は未解決です (3) nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__beginthreadex" は未解決です (4) Debug/prog.exe : fatal error LNK1120: 外部参照 3 が未解決です。 (5) link.exe の実行エラー --------------------------------- 特に、(1)~(3) の意味がよく分かりません。 Readmeを見ると、「コンパイルすればいい」としか書いてないのですが、、、 もし原因がわかったらお願いします。

  • CLapack C++

    現在、C言語の中で疑似逆行列を用いた最小2乗法によって データの処理を行いたいと考えています。 そのためにCLapackという線形演算ライブラリを visual studio 6.0に組み込みたいのですがうまくいきません。 研究で、ADボードやロボットマニピュレータを使うために  Win32 Application で自分でプログラムを書いています。 Win32 Console Application にCLapackを組み込む事は、 http://www.alab.t.u-tokyo.ac.jp/~bond/doc/clapack.html​ を見てうまくいったのですが、Win32 Applicationで組み込もうとすると、以下のようなエラーがでます。 リンク中... LINK : warning LNK4049: ローカル定義のシンボル "_free" がインポートされました LINK : warning LNK4049: ローカル定義のシンボル "_fprintf" がインポートされました LINK : warning LNK4049: ローカル定義のシンボル "__iob" がインポートされました LINK : warning LNK4049: ローカル定義のシンボル "_malloc" がインポートされました LINK : warning LNK4049: ローカル定義のシンボル "_exit" がインポートされました clapack.lib(dlamch.obj) : error LNK2001: 外部シンボル "__imp__printf" は未解決です clapack.lib(xerbla.obj) : error LNK2001: 外部シンボル "__imp__printf" は未解決です Debug/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。 link.exe の実行エラー プログラムに関する知識が乏しいため、解決できません。 またmath.hをインクルードすると大量のエラーがでます。 CLapackについて詳しい方がいらっしゃいましたら、 どうか教えていただけないでしょうか? よろしくお願いします。

  • LNK2019:未解決の外部シンボル と LNK1120:外部参照 1 が未解決について

    長いタイトルになってしまいすみません。 私は、Visual C++.NETを使用して、C言語プログラミングをしています。あるサンプルプログラムを参考にしながら改良を図っているのですが、以下に示すプログラムを追加したところ、タイトルに示しましたエラーが表示されて困っています。 //長くなり見づらいため、問題の箇所のみ記します。 void main(int argc, char** argv){ } void *sender(void* context){ for(i=0;i<10;i++){ print_identity() print_identity() } } for文の中に、print_identity関数を追加したところ、 エラーが発生しました。 [エラー内容] 1. sample error LNK2019: 未解決の外部シンボル _print_identity が関数 _senderで参照されました。 2. sample fatal error LNK1120: 外部参照 1 が未解決です。 関数の定義がしていないと言うことでしょうか?実際に、定義してみたりしました(定義する場所が違うのかもしれません)が、解決できませんでした。 よろしくお願いします。

  • 外部シンボル "_main" は未解決です というエラーが出ます

    初めまして、プログラミング初心者です。 VC++6.0を使っています。 Win32コンソールアプリケーションで書籍に載っていたサンプルプログラムを実行したところ、 『LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です』 『Debug/shi.exe : fatal error LNK1120: 外部参照 1 が未解決です。』 というエラーが出ます。 元々C言語のプログラムなのでmain関数が必要だということはここのログを見て分かったのですが、C++の場合はどのようにすれば良いのでしょうか? 最終的にはこのプログラムをBorland社のC++Builderで使えるようになりたいのですが… プログラムを載せたいのですが、書籍のプログラムをここに載せてもいいのでしょうか?禁止事項を読んでみたのですが、いまいちよく分からなかったので… 初歩的なところから躓いてしまい、全く進めない状況です。 大変恥ずかしいのですが、どなたかご教授願えませんでしょうか。お願いします。

  • 1 つ以上の複数回定義されているシンボルが見つかりました

    こんにちは。 VC++を使ってプログラムを作っているのですが、コンパイルは通るのですが、リンク時に以下のエラーメッセージが出ます。どなたか解決方法を教えてください。 (仮にプロジェクト名をPROJECTとします。) リンク中... PROJECT.obj : error LNK2005: "struct AA pAA" (?pAA@@3UAA@@A) はすでに PROJECT.obj で定義されています Debug/PROJECT.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました link.exe の実行エラー 開発ツール:VC++6.0 MFCを使用しています。 OS:Windows XP SP2 上記現象の発生した契機は、ヘッダファイル内で定義している構造体に構造体変数を加えたことによります。 【発生前】 ・ヘッダ内 struct AA { }; ・ソース内 AA pAA; 【発生後】 ・ヘッダ内 struct AA { }pAA; ・ソース (ソース内での構造体変数の宣言を削除) 以上で、どなたか心当たりのある方はご教授をお願いいたします。