我需要安装啥软件包才能使用路由套接字?
Posted
技术标签:
【中文标题】我需要安装啥软件包才能使用路由套接字?【英文标题】:What package do i need to install for using routing sockets?我需要安装什么软件包才能使用路由套接字? 【发布时间】:2010-12-03 23:41:58 【问题描述】:我正在尝试 Richard Stevens 在 Unix Network Programming 中给出的代码。但我无法编译代码。
这里是源代码。 http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f00/unpv12e/libroute/
我没有头文件 net/if_dl.h 并且 net/route.h 头文件不包含代码使用的常量和结构。
【问题讨论】:
你有没有 grepped 查看常量是否在不同的头文件中?可能是过去 8 年才搬家。 【参考方案1】:请注意,您不需要在该文件夹中创建“libroute”
查看文档:
cd ../libroute # only if your system supports 4.4BSD style routing sockets
make # only if your system supports 4.4BSD style routing sockets
cd ../libxti # only if your system supports XTI
make # only if your system supports XTI
Linux 不是 BSD 风格的路由,直接去 ../intro 构建示例吧~!
【讨论】:
【参考方案2】:这是一个 BSD 特定的 API,Linux 不支持它。这 等效功能(不兼容源)由 netlink 套接字系列。 “man 7 netlink”应该让你开始,但是 你可能需要做一些移植工作。
【讨论】:
【参考方案3】:我现在不在可以执行此操作的机器上,但也许我仍然可以提供帮助。如果您的发行版使用 yum
(例如 RHEL):
yum provides if_dl.h
或者如果您使用apt
(例如 Ubuntu/Debian):
sudo apt-get install apt-file
sudo apt-file update
apt-file search if_dl.h
如果已经安装了apt-file
,那么第一步就不需要了,我不记得是不是第二步了。另外,我相信这两个包管理器都可以使用文件名和完整路径。
希望这对您或其他阅读本文的人有用,您会得到答案!
【讨论】:
【参考方案4】:如https://ubuntu.pkgs.org/16.04/ubuntu-universe-amd64/freebsd-glue_0.2.20_amd64.deb.html 中所述 只需安装 freebsd-glue deb 包:
sudo apt-get install freebsd-glue
【讨论】:
【参考方案5】:尝试从 net 复制 if_dl.h ,并将其放入 /usr/include/net 。 也许它可以工作,也许它需要其他库。 也许我的英语不太好。原谅我。
【讨论】:
您应该首先在您的环境中重现问题并提供具体的解决方案,而不是“尝试/可能”的答案。 *** 不是一个讨论论坛。这是一个问答网站,因此在发布之前应全面检查您的答案。以上是关于我需要安装啥软件包才能使用路由套接字?的主要内容,如果未能解决你的问题,请参考以下文章