문제의 간략한 버전:
시스템의 기계 아키텍처에 해당하는 매크로(예: __x86_64__
, , __ia64__
? __mips__
) 가 포함된 C 헤더 파일은 무엇입니까?
질문의 더 긴 버전 :
나는 달리고 싶다신경절모니터링 도구틸레라Linux를 실행하는 시스템을 기반으로 합니다.
Ganglia는 현재 Tilera를 지원하지 않습니다. 작동하려면 다음과 같은 파일을 수정해야 합니다.머신 유형 기능머신 아키텍처를 반환합니다. 함수의 본문은 컴파일 타임에 다음과 같이 결정됩니다.
g_val_t
machine_type_func ( void )
{
g_val_t val;
#ifdef __i386__
snprintf(val.str, MAX_G_STRING_SIZE, "x86");
#endif
#ifdef __x86_64__
snprintf(val.str, MAX_G_STRING_SIZE, "x86_64");
#endif
...
return val;
}
Tilera에 적합한 줄을 추가해야 하는데 Tilera 기반 시스템을 지정하는 매크로 이름을 모르겠습니다. 이 매크로는 표준 Linux 헤더 파일 중 하나에 정의되어 있는 것 같지만 어느 파일을 봐야 할지 모르겠습니다.
답변1
헤더 파일은 이를 정의하지 않습니다. 이러한 매크로는 컴파일러에 의해 미리 정의됩니다. 사전 정의된 매크로의 전체 목록을 찾으려면 다음을 수행하십시오.
echo | gcc -E -dM -
그런 다음 가능한 매크로에 대한 결과를 검토합니다.
답변2
__x86_64__
보다 정확하게는 이것이 정의가 있는 곳 이라고 생각합니다 . 예를 들면 다음과 같습니다.https://github.com/gcc-mirror/gcc/blob/releases%2Fgcc-10.2.0/gcc/config/i386/i386-cc#L688
cpp_define (parse_in, "__x86_64__");
하지만 소스 코드를 수정하고 다시 컴파일하고 테스트할 인내심이 없습니다. 좋은 검색 방법은 다음과 같습니다.
git grep '"__aarch64__'