Nenhum arquivo de cabeçalho define isso - essas macros são predefinidas pelo compilador. Para descobrir a lista completa de macros predefinidas, faça o seguinte:
echo | gcc -E -dM -
Em seguida, analise os resultados para macros prováveis.
Versão mais curta da pergunta:
Qual cabeçalho C contém a macro que corresponde à arquitetura da máquina do sistema (por exemplo, __x86_64__
, __ia64__
, __mips__
?)
Versão mais longa da pergunta:
Gostaria de executar as ferramentas de monitoramento ganglia em um Tilera - sistema baseado em Linux.
O Ganglia atualmente não tem suporte para o Tilera. Para fazer isso funcionar, eu precisava modificar uma função C chamada machine_type_func que retorna a arquitetura da máquina. O corpo desta função é determinado em tempo de compilação, é assim:
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;
}
Eu preciso adicionar a linha apropriada para o Tilera, mas não sei o nome da macro que especifica um sistema baseado no Tilera. Eu estou supondo que esta macro é definida em um dos cabeçalhos padrão do Linux, mas eu não sei qual deles procurar.
Nenhum arquivo de cabeçalho define isso - essas macros são predefinidas pelo compilador. Para descobrir a lista completa de macros predefinidas, faça o seguinte:
echo | gcc -E -dM -
Em seguida, analise os resultados para macros prováveis.
Mais precisamente, acho que é aqui que o __x86_64__
é definido, por exemplo: link
cpp_define (parse_in, "__x86_64__");
mas não tive paciência para modificar a fonte, recompilar e testar ainda. Uma boa maneira de pesquisar é:
git grep '"__aarch64__'
Tags linux header-file