can't make program?

Hi,
my program can’t be made properly,the qcc said:

qcc test_socket.c -o test

/tmp/AAA876583_cc.o: In function main': /tmp/AAA876583_cc.o(.text+0x10): undefined reference to socket’
/tmp/AAA876583_cc.o(.text+0x81): undefined reference to bind' /tmp/AAA876583_cc.o(.text+0xb6): undefined reference to listen’
/tmp/AAA876583_cc.o(.text+0x107): undefined reference to accept' /tmp/AAA876583_cc.o(.text+0x137): undefined reference to inet_ntoa’
/tmp/AAA876583_cc.o(.text+0x167): undefined reference to `send’
cc: /usr/ntox86/bin/ld error 1

i think that i ignor something .
Who can help me?

here is my code:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define MYPORT 3490
#define BACKLOG 10


main()
{
int sockfd, new_fd; /* listen on sock_fd, new connection on new_fd /
struct sockaddr_in my_addr; /
my address information /
struct sockaddr_in their_addr; /
connector’s address information /
int sin_size;
if ((sockfd =socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror(“socket”);
exit(1);
}
my_addr.sin_family = AF_INET; /
host byte order /
my_addr.sin_port = htons(MYPORT); /
short, network byte order /
my_addr.sin_addr.s_addr = INADDR_ANY; /
auto-fill with my IP /
bzero(&(my_addr.sin_zero)); /
zero the rest of the struct */
if (bind(sockfd, (struct sockaddr )&my_addr, sizeof(struct
sockaddr))== -1)
{
perror(“bind”);
exit(1);
}
if (listen(sockfd, BACKLOG) == -1)
{
perror(“listen”);
exit(1);
}
while(1)
{ /
main accept() loop */
sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sockfd, (struct sockaddr )&their_addr,&sin_size))
== -1)
{
perror(“accept”);
continue;
}
printf(“server: got connection from %s\n”,
inet_ntoa(their_addr.sin_addr));
if (!fork())
{ /
this is the child process /
if (send(new_fd, “Hello, world!\n”, 14, 0) == -1)
perror(“send”);
close(new_fd);
exit(0);
}
close(new_fd); /
parent doesn’t need this /
while(waitpid(-1,NULL,WNOHANG) > 0); /
clean up child processes */
}
}

You’re missing a libsocket.so. Add -lsocket to your command line, as shown
below. When the compiler sees the -l (ell) option, it will substitute in the
lib…<a|so>.

\

qcc test_socket.c -o test -lsocket

Cheers,
-Brian

“johnson zhou” <jszhou@yahoo.com> wrote in message
news:aq82vs$j09$1@inn.qnx.com

Hi,
my program can’t be made properly,the qcc said:

qcc test_socket.c -o test

/tmp/AAA876583_cc.o: In function main': /tmp/AAA876583_cc.o(.text+0x10): undefined reference to socket’
/tmp/AAA876583_cc.o(.text+0x81): undefined reference to bind' /tmp/AAA876583_cc.o(.text+0xb6): undefined reference to listen’
/tmp/AAA876583_cc.o(.text+0x107): undefined reference to accept' /tmp/AAA876583_cc.o(.text+0x137): undefined reference to inet_ntoa’
/tmp/AAA876583_cc.o(.text+0x167): undefined reference to `send’
cc: /usr/ntox86/bin/ld error 1

i think that i ignor something .
Who can help me?

here is my code:

#include <stdio.h
#include <stdlib.h
#include <errno.h
#include <string.h
#include <sys/types.h
#include <netinet/in.h
#include <sys/socket.h
#include <sys/wait.h
#define MYPORT 3490
#define BACKLOG 10


main()
{
int sockfd, new_fd; /* listen on sock_fd, new connection on new_fd /
struct sockaddr_in my_addr; /
my address information /
struct sockaddr_in their_addr; /
connector’s address information /
int sin_size;
if ((sockfd =socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror(“socket”);
exit(1);
}
my_addr.sin_family = AF_INET; /
host byte order /
my_addr.sin_port = htons(MYPORT); /
short, network byte order /
my_addr.sin_addr.s_addr = INADDR_ANY; /
auto-fill with my IP /
bzero(&(my_addr.sin_zero)); /
zero the rest of the struct */
if (bind(sockfd, (struct sockaddr )&my_addr, sizeof(struct
sockaddr))== -1)
{
perror(“bind”);
exit(1);
}
if (listen(sockfd, BACKLOG) == -1)
{
perror(“listen”);
exit(1);
}
while(1)
{ /
main accept() loop */
sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sockfd, (struct sockaddr )&their_addr,&sin_size))
== -1)
{
perror(“accept”);
continue;
}
printf(“server: got connection from %s\n”,
inet_ntoa(their_addr.sin_addr));
if (!fork())
{ /
this is the child process /
if (send(new_fd, “Hello, world!\n”, 14, 0) == -1)
perror(“send”);
close(new_fd);
exit(0);
}
close(new_fd); /
parent doesn’t need this /
while(waitpid(-1,NULL,WNOHANG) > 0); /
clean up child processes */
}
}