readelfがLinuxではなくOSとして「System V」を表示するのはなぜですか?


10

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) 

i)コンパイルしたコードii)出力gcc --versioniii)コンパイルに使用した正確なコマンドを示してください。
terdon

それに応じて質問を編集しました。
alex_reader 2014年

私はちょうどreadelf -h /bin/lsdebian gnu / linuxでやった。それも示したOS/ABI: UNIX - System V。私の推測では、ABIはLinuxだけでなく、複数のカーネルで使用されています。Linuxが複数のABIをサポートしていることも知っています。
ctrl-alt-delor 2014年

6
ウィキペディアは言う[SysVの]関係なく、ターゲットプラットフォームの[ELFヘッダ内のOSABIフィールド]は、多くの場合、0に設定されていることを
ステファンChazelas

1
このフィールドは、ELFファイルがOS固有の拡張子を使用しているかどうかを示します。デフォルトは0です。ここでの詳細な説明(EI_OSABI)。
Leiaz 2014年

回答:


8

異なるプラットフォームのELF実行可能ファイルには、いくつかの違いがあります。「UNIX-System V」が共通の基盤です。System Vは、ELFフォーマットの由来です。対応する数値は0です。この値は、実行可能ファイルがOS固有の拡張機能を使用していないことを示しています。Debian GNU / Linuxは、少なくとも、このフィールドがデフォルトで0に設定された実行可能ファイルを生成するようにGCC / binutilsを構成します。


3
ELF規格では、0は「ELFOSABI_NONE 0拡張なしまたは未指定」を意味するとしていますsco.com/developers/gabi/2003-12-17/ch4.eheader.html
Ciro Santilli冠状病毒审查六四事件法轮功
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.