为什么我在Linux上无法编译SCTP程序?

4

首先我在Ubuntu 12.04上安装了sctp
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'

有什么问题吗?


展示你的编译命令和部分源代码。 - Basile Starynkevitch
еұ•зӨәдҪ жӯЈеңЁдҪҝз”Ёзҡ„gccзј–иҜ‘е‘Ҫд»ӨжқҘзј–иҜ‘дҪ зҡ„зЁӢеәҸгҖӮиҜ·и®°дҪҸпјҢgccеҸӮж•°зҡ„йЎәеәҸйқһеёёйҮҚиҰҒгҖӮ - Basile Starynkevitch
2个回答

6
如果你使用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程序参数的顺序非常重要和显著。

0

CentOS:yum安装lksctp-tools-devel


目前你的回答不够清晰,请[编辑]以添加更多细节,帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接