기계 아키텍처를 지정하는 매크로를 정의하는 헤더는 무엇입니까?

기계 아키텍처를 지정하는 매크로를 정의하는 헤더는 무엇입니까?

문제의 간략한 버전:

시스템의 기계 아키텍처에 해당하는 매크로(예: __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__'

관련 정보