問題の簡単なバージョン:
システムの機械アーキテクチャに対応するマクロ(例えば、、、__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つで定義されているようですが、どのファイルを見るべきかわかりません。
答え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__'