Почему мне не удалось скомпилировать программу sctp в Linux?

Сначала я устанавливаю sctp на Ubuntu 12.04
sudo apt-get install libsctp-dev lksctp-tools
Затем в моем файле .c я включаю:

#include < netinet/in.h >
#include < netinet/sctp.h >
#include < sys/socket.h >
#include < stdlib.h >
#include < unistd.h >

однако, когда я скомпилировал с gcc, результат:

 undefined reference to `sctp_recvmsg'
 undefined reference to `sctp_get_no_strms'
 undefined reference to `sctp_sendmsg'

Что случилось?


person huaxz1986    schedule 21.04.2013    source источник
comment
Покажите свою команду компиляции и часть исходного кода.   -  person Basile Starynkevitch    schedule 21.04.2013
comment
Покажите команду gcc, которую вы используете для компиляции вашей программы. Помните, что порядок аргументов gcc имеет большое значение.   -  person Basile Starynkevitch    schedule 21.04.2013


Ответы (1)


Если вы действительно компилируете с gcc temp.c -o temp, то вы не связываете никакие библиотеки (кроме libc.6.so по умолчанию), и вам нужен дополнительный аргумент для gcc; возможно, попробуйте скомпилировать с

 gcc -Wall -g temp.c -lsctp -o temp

После того, как ваша программа будет отлажена с помощью отладчика gdb и вы считаете, что она не содержит ошибок, вы можете попросить компилятор оптимизировать ее с помощью

 gcc -Wall -O2 temp.c -lsctp -o temp

Порядок аргументов программы до gcc важен и важен.

person Basile Starynkevitch    schedule 21.04.2013