소스에서 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
) 이것은 아닐 수도 있습니다옳은하지만 대부분의 라이브러리 루틴에는 CPUID 정보가 필요하지 않으므로 유용한 정보를 얻을 수 있습니다. 그러나 CPU 정보를 찾으려는 함수를 만난 적이 있다면, 구축한 라이브러리가 예상한 위치에서 100% 작동하지 않을 수 있습니다.