ELFファイル形式を理解するために、gccを使用して小さなCプログラム(2行のコード)をコンパイルしました。readelf -h
オブジェクトファイルでを行うと、ヘッダーにあります:
OS/ABI: UNIX - System V
私はFedoraを使用していますが、なぜLinuxではないのですか?
編集:私が編集した
int main(){
int x = 0;
x++;
}
とgcc -o main.o -c main.c
。私のgccバージョンは
gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
それに応じて質問を編集しました。
—
alex_reader 2014年
私はちょうど
—
ctrl-alt-delor 2014年
readelf -h /bin/ls
debian gnu / linuxでやった。それも示したOS/ABI: UNIX - System V
。私の推測では、ABIはLinuxだけでなく、複数のカーネルで使用されています。Linuxが複数のABIをサポートしていることも知っています。
ウィキペディアは言う[SysVの]関係なく、ターゲットプラットフォームの[ELFヘッダ内のOSABIフィールド]は、多くの場合、0に設定されていることを
—
ステファンChazelas
このフィールドは、ELFファイルがOS固有の拡張子を使用しているかどうかを示します。デフォルトは0です。ここでの詳細な説明(EI_OSABI)。
—
Leiaz 2014年
gcc --version
iii)コンパイルに使用した正確なコマンドを示してください。