私は大規模なC / C ++開発プロジェクトを進めており、開発ネットワークとしてRed Hat Enterprise Linux(RHEL)6を使用しており、gccとgmakeと共にg ++も使用しています。
経営陣は、アップグレードおよび/または保守のためにRHELネットワークが中断されている間にソフトウェア開発を継続できるように、Red Hat CentOS Linux 6.10と共にOracle VirtualBox仮想マシンをインストールするように指示しました。 CentOS LinuxとRHELは同じであるため、C / C ++アプリケーションは両方のオペレーティングシステムで作成および実行できる必要があります。
しかし、CentOS Linux VMでアプリケーションの1つを作成しようとしたときに奇妙な問題が発生しました。アプリケーションの複合部分であるcppファイルに含まれる次のファイルが見つからないようです。
/usr/include/pci/pci.h
含まれるステートメントは次のとおりです。
#include <pci/pci.h>
makeを実行すると、次のエラーが発生します。
/usr/bin/ld: cannot find -lpci
C ++アプリケーションを確認すると、実際には2つの異なる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
/usr/include/pci フォルダは CentOS Linux VM には存在しません。また、pciutilsをインストールしようとすると、「すでにインストール済み」というメッセージが表示されます。 /usr/include/linux/pci.hファイルはCentOS Linux仮想マシンにあり、奇妙なことに、lspciコマンドはCentOS Linuxでも機能します。
したがって、この問題についてさまざまなGoogleとBingの検索を試しても、多くの情報は得られませんでした。私はこれが実際にCentOS Linuxのバグだとは思わず、むしろCentOS Linux VMに欠けているpci構成の問題だと思います。問題を解決する方法がわからない。私の考えでは、この問題は解決しやすい問題だと思います。
答え1
をインストールする必要がありますpciutils-devel
。