系统相关
首页 > 系统相关> > 为什么我在Linux中编译sctp程序失败了?

为什么我在Linux中编译sctp程序失败了?

作者:互联网

首先我在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 >

howerver,当我用gcc编译时,结果是:

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

怎么了?

解决方法:

如果您真的使用gcc temp.c -o temp进行编译,那么您不会链接任何库(默认的libc.6.so除外),并且您需要一些额外的gcc参数;也许尝试编译

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

一旦你的程序在gdb调试器的帮助下调试并且你认为它没有bug,你可以要求编译器使用它来优化它

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

gcc的程序参数顺序非常重要.

标签:linux,undefined-reference,sctp
来源: https://codeday.me/bug/20190901/1779923.html