致命错误:rpc/rpc.h:没有此文件或目录

致命错误:rpc/rpc.h:没有此文件或目录

我正在尝试按照 Snort 网站上的说明从源文件在 Ubuntu 21.04 上安装 Snort。我按照 Youtube 上的视频操作,解决了许多问题,但我还是卡在了:

sp_rpc_check.c:32:10: fatal error: rpc/rpc.h: No such file or directory
   32 | #include <rpc/rpc.h>
      |          ^~~~~~~~~~~
compilation terminated.
make[4]: *** [Makefile:478: sp_rpc_check.o] Error 1
make[4]: Leaving directory '/usr/snort-2.9.18/src/detection-plugins'
make[3]: *** [Makefile:428: all] Error 2
make[3]: Leaving directory '/usr/snort-2.9.18/src/detection-plugins'
make[2]: *** [Makefile:547: all-recursive] Error 1
make[2]: Leaving directory '/usr/snort-2.9.18/src'
make[1]: *** [Makefile:505: all-recursive] Error 1
make[1]: Leaving directory '/usr/snort-2.9.18'
make: *** [Makefile:370: all] Error 2

sudo apt install libntirpc-dev按照 AskUbuntu 上的另一个帖子进行尝试。

我比较新手。已经做过sudo apt updatesudo apt upgrade

来自 snort 网站,https://www.snort.org/#get-started,已经完成了所有:

wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
                      
wget https://www.snort.org/downloads/snort/snort-2.9.18.tar.gz
tar xvzf daq-2.0.7.tar.gz
                      
cd daq-2.0.7
./configure && make && sudo make install
tar xvzf snort-2.9.18.tar.gz
                      
cd snort-2.9.18

但运行时:

./configure --enable-sourcefire && make && sudo make install

得到上面描述的错误

我还解决了 libpcap、libpcre 和 dnet 问题。所以现在只是这个 rpc 问题。谢谢

答案1

我的操作系统是 Debian,你可以:

  1. 安装相应的软件包及其头文件(-dev表示)。
sudo apt install libntirpc-dev

2. 找到所有头文件所在的位置。

dpkg -L libntirpc-dev

您可以看到如下输出:

/usr/include/ntirpc/rpc/rpc.h

3.将标题目录附加到配置中。

./configure --enable-optimizations --includedir=/usr/include/tirpc/

答案2

如果你的/usr/include/rpc文件夹不包含rpc.h文件,并且你已经安装libntirpc-dev,请尝试将标题链接到标准目录中,如所述这里! 其他解决方案我发现,是使用./configure CFLAGS=-I/usr/include/tirpc@steeldriver 在另一个答案中描述的作为评论!不幸的是,被点赞的解决方案对我来说不起作用,即使它还包括库目录路径...

答案3

决定很简单。你需要把丢失的文件从这里https://github.com/lattera/glibc/tree/master/sunrpc/rpc放到/usr/include/rpc 它不安全,但可以工作 xD 看这里

答案4

我遇到了同样的问题,但在网上找不到任何帮助,后来我自己找到了解决办法。基本上文件是在那里的,但不知何故,snort 却在其他目录中查找。所以所有需要的文件都放在 /usr/include/ntirpc/ 中,但你必须将每个文件复制到其自己的目录中

例如,为了解决第一个错误,您需要将目录 /usr/include/ntirpc/rpc/rpc.h 中的文件复制到目录 /usr/include/rpc/

这将解决第一个错误,但安装过程中还会出现很多其他错误,但过程相同。

如果错误是 misc/anyfile,则将文件从 /usr/include/ntirpc/misc/ 复制到位置 /usr/incldue/misc

如果错误提示 anyfile.h 记得将其复制到 /usr/include/

相关内容