问题描述
开发环境
- CentOS 7.6 X86-64
- yum 源是用的本地源 CentOS-7-x86_64-DVD-1908.iso
问题描述
编译代码提示 netinet/sctp.h: No such file or directory,Log 如下:
fatal error: netinet/sctp.h: No such file or directory
#include <netinet/sctp.h>
^
compilation terminated.
尝试解决
猜测应该是缺少安装 lksctp-tools。然而使用 rpm 检查发现,其实是已经安装有的,So,问题优点诡异。
[root@Centos ~]# rpm -qa |grep sctp
lksctp-tools-1.0.17-2.el7.x86_64
或者
[root@Centos ~]# yum list lksctp*
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
lksctp-tools.x86_64 1.0.17-2.el7 @rhel-source
[root@typhoon-base-unit0 ~]#
此次,直接在 /usr/ 下面查找 sctp.h 文件,也是没发现 netinet/sctp.h。
[root@Centos ~]# find . -iname sctp.h
./include/linux/sctp.h
./src/kernels/3.10.0-957.el7.x86_64/include/config/ip/sctp.h
./src/kernels/3.10.0-957.el7.x86_64/include/config/ip/vs/proto/sctp.h
./src/kernels/3.10.0-957.el7.x86_64/include/config/netfilter/xt/match/sctp.h
./src/kernels/3.10.0-957.el7.x86_64/include/config/nf/ct/proto/sctp.h
./src/kernels/3.10.0-957.el7.x86_64/include/config/nf/nat/proto/sctp.h
./src/kernels/3.10.0-957.el7.x86_64/include/linux/sctp.h
./src/kernels/3.10.0-957.el7.x86_64/include/net/sctp/sctp.h
./src/kernels/3.10.0-957.el7.x86_64/include/net/netns/sctp.h
./src/kernels/3.10.0-957.el7.x86_64/include/uapi/linux/sctp.h
解决办法
首先尝试安装多个依赖库,方式如下,包括重新安装,好像都不可以。
yum install lksctp-tools* #安装所有lksctp-tools相关库
yum install lksctps* #安装所有lksctps相关库
yum reinstall lksctp-tools #重新安装lksctp-tools
后面了解到,是需要使用 CentOS-7-x86_64-Everything-1908.iso 镜像才可以。
需要重新镜像(本地镜配置像请出门左转),然后就可以了。如果还是不行,把之前安装的 lksctp-tools 卸载后,重新安装即可。
yum install lksctp-tools* #安装所有与lksctp-tools相关库
yum erase lksctp-tools #卸载lksctp-tools库
rpm -e lksctp-tools* #卸载lksctp-tools库