我正在寻找一种在 Linux 上查找powerpc cpu 类型的编程方式。执行一些与建议 mfpvr 指令的答案相关的谷歌搜索,我发现这在ELF AUX 标头中可用,果然我可以获得我正在运行的机器的 POWER5 字符串,如下所示:
#include <stdio.h>
#include <elf.h>
int main( int argc, char **argv, char **envp )
{
/* walk past all env pointers */
while ( *envp++ != NULL )
;
/* and find ELF auxiliary vectors (if this was an ELF binary) */
#if 0
Elf32_auxv_t * auxv = (Elf32_auxv_t *) envp ;
#else
Elf64_auxv_t * auxv = (Elf64_auxv_t *) envp ;
#endif
char * platform = NULL ;
for ( ; auxv->a_type != AT_NULL ; auxv++ )
{
if ( auxv->a_type == AT_PLATFORM )
{
platform = (char *)auxv->a_un.a_val ;
break;
}
}
if ( platform )
{
printf( "%s\n", platform ) ;
}
return 0 ;
}
在我想使用此信息的共享库上下文中,我无权访问 envp。是否有另一种编程方法来查找 ELF AUX 标头的开头?