我正在尝试从源代码构建 GLIBC 2.14。我不断收到找不到 cpuid.h 的错误消息。
该文件包含什么内容以及它的用途是什么?
我看到 cpuid.h 被放置在两个不同的位置,即。
/usr/lib/gcc/x86_64-redhat-linux/4.3.0/include/cpuid.h
/usr/src/kernels/2.6.25-14.fc9.x86_64/include/config/x86/cpuid.h
我还发现这两个文件是不同的,运行一个简单的 diff 告诉我 -:
diff --brief /usr/lib/gcc/x86_64-redhat-linux/4.3.0/include/cpuid.h /usr/src/kernels/2.6.25-14.fc9.x86_64/include/config/x86/cpuid.h
Files /usr/lib/gcc/x86_64-redhat-linux/4.3.0/include/cpuid.h and /usr/src/kernels/2.6.25-14.fc9.x86_64/include/config/x86/cpuid.h differ
什么是 cpuid.h,它通常包含什么以及它的用途是什么?
答案1
cpuid.h
包含汇编语言片段的定义,以从某些 CPU 中获取低级信息,以及程序可能用来确定其运行的 CPU 类型以及可用功能的各种数字常量的名称。 (例如,如果程序想要使用某些 CPU 上可用的特殊矩阵数学指令,它可以在尝试使用这些指令之前检查这些指令是否可用。如果程序在较旧的 CPU 上运行,它可以使用以下软件模拟相反,这些说明。)
在编译项目中继续前进的快速而肮脏的方法是将cpuid.h
您找到的文件之一复制到编译器可以找到它的位置。 (也许可以尝试cp /usr/lib/gcc/x86_64-redhat-linux/4.3.0/include/cpuid.h /usr/include
)这可能不是正确的您的 CPU 的文件,但大多数库例程无论如何都不需要 cpuid 信息,因此它可能会让您取得有用的进展。然而,如果您曾经遇到过尝试查找 CPU 信息的函数,那么您构建的库可能无法 100% 在您期望的地方工作。