我正在尝试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头文件不包含代码使用的常量和结构。
答案 0 :(得分: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并构建示例〜!
答案 1 :(得分:4)
这是一个特定于BSD的API,linux不支持它。该 等效功能(不兼容源代码)由。提供 netlink socket系列。 “man 7 netlink”应该让你开始,但是 你可能需要做一些移植工作。
答案 2 :(得分: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
,则不需要第一步,我不记得第二步是否正确。此外,我相信两个包管理器都使用文件名和完整路径。
希望这对你或其他读这篇文章的人有用,你会得到答案!
答案 3 :(得分:0)
尝试从net复制if_dl.h,并将其放在/ usr / include / net中。 可能是它的工作,也许它需要其他的库。 也许我的英语不太好。原谅我。
答案 4 :(得分:0)
如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