2017-08-26 59 views
-2

插座()函數返回-1。序更多地瞭解它example_socket(),並添加headerfile未定義參考我的代碼中使用的「explain_setsocket」

#include<libexplain/socket.h> 

雖然編譯-lexplain也被添加。但我有以下錯誤

未定義的參考`explain_socket」

代碼:

#include <libexplain/socket.h> 
main(){ 
int sock; 
if((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1){ 
       char message[5000]; 
     memset(message,0,5000); 
       printf("\nSOCKET ERROR\n"); 
     printf("err: socket() failed"); 
     fprintf(stderr, "%s\n", explain_socket(AF_INET, SOCK_DGRAM, 0)); 
     exit(EXIT_FAILURE); 
    } 
} 

請幫我解決這個問題。


[更新from comment]

編譯命令:

cc xyz.c -lexplain -o xyz 
+1

什麼是'sopcket.h'和'example_socket'? – melpomene

+2

爲什麼不只是'如果((襪子= ...)== -1){fprintf中(錯誤, 「ERR:套接字()失敗:%S \ n」,字符串錯誤(錯誤));出口(EXIT_FAILURE); }'? – melpomene

+1

顯示實際的編譯命令。編譯器的參數順序(如'gcc')很重要。 –

回答

0

編譯命令:

cc xyz.c -lexplain -o xyz 

你可能想指定的庫最後在命令行上:

cc xyz.c -o xyz -lexplain 
+0

代碼是一個大計劃的一部分。爲編譯創建一個make文件。 – student