[問題] Tcp Socket在 SUN OS compiler Error

看板LinuxDev作者 (飛天)時間12年前 (2012/12/17 22:44), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
請教各位先進,我在測試 SUN OS 平台轉至 至Linux (RHEL)上有關 TCP Socket的問題,其中包含了 htonl、ntohl等問題,所以在測試 client / server之間的溝通,測試程式client & server在 linux上 都可以comipler過且正確執行,但把server程式放到 SUN OS就compiler 過不了,因為我主要測試 client 在linux上run但server是 SUN OS。 Server 程式如下: s1.c #include <stdio.h> /* for printf() and fprintf() */ #include <sys/types.h> /* for Socket data types */ #include <sys/socket.h> /* for socket(), connect(), send(), and recv() */ #include <netinet/in.h> /* for IP Socket data types */ #include <arpa/inet.h> /* for sockaddr_in and inet_addr() */ #include <stdlib.h> /* for atoi() */ #include <string.h> /* for memset() */ #include <unistd.h> /* for close() */ int main(int argc, char *argv[]) { int listenfd = 0, connfd = 0; struct sockaddr_in serv_addr; char sendBuff[1025]; time_t ticks; listenfd = socket(AF_INET, SOCK_STREAM, 0); memset(&serv_addr, '0', sizeof(serv_addr)); memset(sendBuff, '0', sizeof(sendBuff)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(5000); bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); listen(listenfd, 10); while(1) { connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); ticks = time(NULL); //snprintf(sendBuff, sizeof(sendBuff), "%.24s\r\n", ctime(&ticks)); snprintf(sendBuff, sizeof(sendBuff), "%4s\r\n","hello world"); write(connfd, sendBuff, strlen(sendBuff)); close(connfd); sleep(1); } } ========================= gcc s1.c 如下 user@testhost[/home/user/Sample]gcc s1.c Undefined first referenced symbol in file bind /var/tmp//cc8yehtb.o accept /var/tmp//cc8yehtb.o listen /var/tmp//cc8yehtb.o socket /var/tmp//cc8yehtb.o ld: fatal: Symbol referencing errors. No output written to a.out collect2: ld returned 1 exit status 這是什麼錯誤訊息呀? -- 每天做一件離夢想近一點的事!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.9.29

12/17 22:48, , 1F
這邊好像也有人有同的樣問題,但我看不太懂他的說明
12/17 22:48, 1F

12/17 22:48, , 2F
12/17 22:48, 2F

12/17 22:52, , 3F
剛剛再試了一下:gcc -lsocket -lnsl s1.c
12/17 22:52, 3F

12/17 22:52, , 4F
這樣可以compiler過了
12/17 22:52, 4F
文章代碼(AID): #1Gpo_DHb (LinuxDev)
文章代碼(AID): #1Gpo_DHb (LinuxDev)