使用路由套接字需要安装哪些软件包?

问题描述 投票:6回答:5

我正在尝试Richard Stevens在Unix网络编程中给出的代码。但我无法获得编译代码。

这是源代码。 http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f00/unpv12e/libroute/

我没有头文件net / if_dl.h和net / route.h头文件不包含代码使用的常量和结构。

c linux networking routing
5个回答
4
投票

这是一个特定于BSD的API,linux不支持它。 netlink套接字系列提供了等效功能(不兼容源代码)。 “man 7 netlink”应该让你开始,但你可能需要做一些移植工作。


6
投票

请注意,您不需要在该文件夹中创建“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并构建实例〜!


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,则第一步不是必需的,我不记得第二步是否正确。此外,我相信两个包管理器都使用文件名和完整路径。

希望这对你或其他读这篇文章的人有用,你会得到答案!


1
投票

正如在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

0
投票

尝试从net复制if_dl.h,并将其放在/ usr / include / net中。可能是它的工作,也许它需要其他的库。也许我的英语不太好。原谅我。

© www.soinside.com 2019 - 2024. All rights reserved.