我正在从事一个大型 C/C++ 开发项目,我们使用 Red Hat Enterprise Linux (RHEL) 6 作为我们的开发网络,还使用 g++ 和 gcc 以及 gmake。
管理层指示我们安装带有 Red Hat CentOS Linux 6.10 的 Oracle VirtualBox 虚拟机,这样当我们的 RHEL 网络因升级和/或维护而停机时,我们就可以继续进行软件开发。 CentOS Linux 和 RHEL 应该是相同的,因此我们的 C/C++ 应用程序应该能够在任一操作系统上创建和运行。
然而,当我尝试在 CentOS Linux VM 上制作我们的应用程序之一时,遇到了一个奇怪的问题。似乎无法找到包含在作为应用程序的复合部分的 cpp 文件中的以下文件。
/usr/include/pci/pci.h
包含语句是:
#include <pci/pci.h>
执行 make 会产生以下错误:
/usr/bin/ld: cannot find -lpci
检查 C++ 应用程序,它实际上包含两个不同的 pci.h 文件,如下所示:
#include <pci/pci.h>
#include <linux/pci.h>
在我们的 RHEL 上,不会发生错误,这两个包含的文件都存在,以及一些复合 .h 文件:
/usr/include/pci/pci.h
/usr/include/linux/pci.h
在我们的 CentOS Linux VM 上,以下文件夹和文件不存在,但存在于我们的 RHEL 上:
/usr/include/pci/pci.h
/usr/include/pci/config.h
/usr/include/pci/header.h
/usr/include/pci/types.h
我们的 CentOS Linux VM 上不存在 /usr/include/pci 文件夹,此外,尝试安装 pciutils 会显示一条消息“已安装”。文件 /usr/include/linux/pci.h 位于我们的 CentOS Linux 虚拟机上,奇怪的是,lspci 命令也适用于我们的 CentOS Linux。
因此尝试对这个问题进行各种 Google 和 Bing 搜索并没有找到太多信息。我认为这实际上并不是 CentOS Linux 中的错误,而实际上是我们的 CentOS Linux VM 上遗漏了 pci 的配置问题。不太确定如何纠正该问题。我认为这可能是一个很容易解决的问题。
答案1
您需要安装pciutils-devel
.