Вопрос

Я написал подобную тестовую программу:

#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

Вывод «Символ розетки не ссылается».

Пожалуйста, дайте мне направление, чтобы я мог решить это.

Это было полезно?

Решение

Вот вопрос.

Я написал подобную тестовую программу:

#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 Вы получите следующее со страницы Man:

SYNOPSIS
     cc [ flag ... ] file ... -lsocket  -lnsl  [ library ... ]

То -l Флаг указывает, что для использования этой функции вам также необходимо связать названную библиотеку. В этом случае вам говорят добавить -lsocket -lnsl к тому cc Командная строка следующим образом:

$ /tool/sunstudio/bin/cc test.c -lsocket -lnsl

Другие советы

Вы должны ссылаться в библиотеке сокетов, в командной строке:

-lsocket 

Вам нужно добавить хотя бы -lsocket На ваш уровень ссылки, то есть ссылка против libsocket.so. Я не знаю, как это сделать в Sunstudio Ui, хотя - это его проекты Makefile на основе?

Страница человека обычно является хорошим местом для поиска необходимых библиотек; В этом случае мужская страница для розетки Также рекомендует -lnsl (См. Синопсис) Так что это тоже может потребоваться, но я не помню, чтобы это было необходимо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top