2012-12-17 105 views
0

我想在freebsd 8上編譯一些簡單的網絡程序,並且遇到編譯問題。我正在創建一個簡單的客戶端服務器程序,但沒有從網絡功能或結構沒有得到編譯。freebsd網絡程序編譯

例如,我使用標準的socket()調用來創建一個套接字,但我遇到了一個錯誤「調用的對象套接字不是一個函數。」

如果我刪除網絡代碼,然後我的玩具程序編譯。爲了簡單起見,我只是放了一個不編譯的簡單例子。 :

#include <stdio.h>       
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
void main(){ 
int socket = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); 
printf("Could create sockets without any issues.\n"); 
} 

我與 「CC toy_prog.c -lc」 編譯它,並給了我提到的錯誤。

+0

你是什麼意思「我的程序無法鏈接到庫(libc)」?這是限制你的代碼的設計/構造還是你的意思是鏈接器無法找到libc OR?消息中包含的錯誤消息(格式正確)會讓人們更容易幫助您。你知道'make'和'makefile'嗎?只有最簡單的項目可以通過沒有makefile來獲得。祝你好運。 – shellter

+0

你是怎麼調用socket的?它具有簽名''int套接字(int域,int類型,int協議)''。也許你可以提供你的代碼的摘錄。 –

+0

請把你的代碼放在你的問題中。祝你好運。 – shellter

回答

3

一個非常簡單的錯誤。您已經定義了一個局部變量,其名稱與您嘗試呼叫的外部功能相同(socket)。嘗試以下,你會得到相同的錯誤:

int f() 
{ 
    return 0; 
} 

void main() 
{ 
    int f = f(); 
} 
+0

拍攝!非常愚蠢的問題。應該仔細看過。 –