UNIXでサーバー、クライアントのCプログラミングをテキストどおりに書いてコンパイルしたのですが、以下のエラーが出ます。gcc, ccでコンパイルすると以下のようになるのですが、これはどういうことなのでしょうか?何が原因なのでしょうか?よろしくお願いいたします。
gcc unix_server.c
/var/tmp/ccvpay1f1.o: In function `main':
/var/tmp/ccvpay1f1.o(.text+0x8c): undefined reference to `socket'
/var/tmp/ccvpay1f1.o(.text+0x104): undefined reference to `unllnk'
/var/tmp/ccvpay1f1.o(.text+0x118): undefined reference to `bind'
/var/tmp/ccvpay1f1.o(.text+0x150): undefined reference to `listen'
/var/tmp/ccvpay1f1.o(.text+0x1a8): undefined reference to `accept'
cc unix_server.c
ld:
/usr/lib/cmplrs/cc/crtn.o: Error: Unresolved:
rindex
socket
bzero
bcopy
unllnk
bind
listen
accept
No.5ベストアンサー
- 回答日時:
あなたのソースからsockect,bindなどのプログラムを呼び出しています。
これらはソケットライブラリと呼ばれるもので、これを使用するときには、このライブラリを明示的にリンクする必要があります。
そのために、-l socket の指定を行います。
そうすると libsocketというライブラリをリンクしてくれます。また libsocket自体が、libnslを呼び出している為に、-l nslの指定も行う必要があります。
一般的には #4の方が言われているように -l XXX は
libXXXを明示的にリンクすることを示します。
TCP/IP等でソケットライブラリを使用する場合(=今回のような場合)は、必ず
-lsocket -lnsl を指定する必要があると覚えておいて下さい。
No.4
- 回答日時:
> -lsocket -lnslとはどういう意味なのでしょうか?
-lXXX とは libXXX という名前を持つライブラリをリンクせよ、という意味になります。
No.3
- 回答日時:
ソケットライブラリ関連がリンクできてないですね。
gcc -lsocket -lnsl unix_server.c
と打って下さい。
No.2
- 回答日時:
.oファイルやld(リンカ)でのエラーなので、ソケット関係のライブラリが見つからないということだと思います。
。コンパイル時のライブラリの指定を確認・指定してみてください。
No.1
- 回答日時:
main関数内に定義されていないものが出てきたぞ!!
ということですね
undefined ~ の後の'socket'etcがないといっています。
ヘッダファイルは定義してますか?
コンパイル時の環境に問題はありませんか?
見直してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UNIX上のプログラムで使うライ...
-
.NET(C#)でのスタックオーバー...
-
コンパイル時のエラー
-
DXライブラリの画像の表示の仕...
-
PHPとMYSQLでトーナメント表作成
-
遺伝的アルゴリズムのクラスラ...
-
vectorで自分のアプリを配布す...
-
汎用機とUNIXの違いについて
-
PDFファイルの文字を取得するプ...
-
gccでわざわざ-lmのようにライ...
-
マーキングができる地図ソフト...
-
AGPLv3の商用利用について
-
なぜIBMはEclipseを無償公開し...
-
商用ホームページでのjQuery等...
-
GPLソフトウエアの商用利用(社...
-
フリーソフトはどんなプログラ...
-
p-nand-q.comのSorted!のソフト...
-
フリーソフトのプログラム言語は
-
オープンソースソフトウェアは...
-
フォトショ ベクトルシェイプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UNIX上のプログラムで使うライ...
-
.NET(C#)でのスタックオーバー...
-
拡張子.niiのファイルの開き方...
-
Excel VBA のstr()関数でエラー
-
DXライブラリの画像の表示の仕...
-
PHPとMYSQLでトーナメント表作成
-
MakefileのLDLIBSとLOADLIBESの...
-
Googlemapのように画像を拡大・...
-
ファイルの圧縮/解凍(Zlib)に...
-
QRコード作成ライブラリ
-
OSX写真アプリへの複数のライブ...
-
【C#】PDFの作成や編集について
-
dxライブラリで作ったpcゲーム...
-
ライブラリParamQuery gridにつ...
-
PDFファイルの文字を取得するプ...
-
オブジェクトライブラリ
-
DxライブラリをVisualstudioを...
-
DLLについて。
-
AGPLとGPLのDLLを同時使用できるか
-
コンパイル時のエラー
おすすめ情報