【问题标题】: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 年才搬家。

标签: c linux networking routing


【解决方案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 。 也许它可以工作,也许它需要其他库。 也许我的英语不太好。原谅我。

          【讨论】:

          • 您应该首先在您的环境中重现问题并提供具体的解决方案,而不是“尝试/可能”的答案。 StackOverflow 不是一个讨论论坛。这是一个问答网站,因此在发布之前应全面检查您的答案。
          猜你喜欢
          • 2017-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-01
          • 2014-01-28
          相关资源
          最近更新 更多