Вот вопрос.
Я написал такую тестовую программу:
#include <sys/socket.h>
int main( void ) {
int sock = socket(AF_INET, SOCK_DGRAM, 0);
return 0;
}
И попытался скомпилировать ее так (этот вывод действительно помогает, вы должны помнить, чтосовременные компиляторы действительно стараются изо всех сил помочь вам решить любые проблемы):
$ /tool/sunstudio/bin/cc test.c
Undefined first referenced
symbol in file
socket test.o
ld: fatal: Symbol referencing errors. No output written to a.out
Теперь из вывода мы видим, что на символ socket
нет ссылки.Поэтому, если вы наберете man socket
, вы получите следующее со страницы руководства:
SYNOPSIS
cc [ flag ... ] file ... -lsocket -lnsl [ library ... ]
Флаг -l
указывает, что для использования этой функции вам также необходимо связать указанную библиотеку.В этом случае вам предлагается добавить -lsocket -lnsl
в командную строку cc
следующим образом:
$ /tool/sunstudio/bin/cc test.c -lsocket -lnsl