2017-01-20 2 views
0

CMakeで構築されたUbuntuシステムにアプリケーションがあり、add_executable述語を使用しています。それはそれだけで正常に動作、しかし、readelfは通常、共有ライブラリに適用されDYN (Shared object file)としてそれを示しています。これが発生する可能性があり、なぜアプリケーションはDYN(共有オブジェクトファイル)として表示されます

[email protected] build# readelf -h ./unittest/unittests    
ELF Header: 
    Magic: 7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00 
    Class:        ELF64 
    Data:        2's complement, little endian 
    Version:       1 (current) 
    OS/ABI:       UNIX - GNU 
    ABI Version:      0 
    Type:        DYN (Shared object file) 
    Machine:       Advanced Micro Devices X86-64 
    Version:       0x1 
    Entry point address:    0x3e3660 
    Start of program headers:   64 (bytes into file) 
    Start of section headers:   19112592 (bytes into file) 
    Flags:        0x0 
    Size of this header:    64 (bytes) 
    Size of program headers:   56 (bytes) 
    Number of program headers:   9 
    Size of section headers:   64 (bytes) 
    Number of section headers:   31 
    Section header string table index: 28 

は誰もが知っていますか?

+0

Ilya、下記のコメントはあなたの質問に答えましたか? – yugr

+0

@yugrはい、ありがとうございます。 – ilya1725

答えて

-1

最近のディストリビューションでは、実行ファイルはデフォルトで位置非依存のコード(たとえばthis question参照)にコンパイルされ、ツール(fileなど)はそれらが共有ライブラリであると考えるようになります。私はあなたがより使いやすい出力を生成するように、それぞれのツールに対してバグを提出することをお勧めします。

+0

"はそれぞれのツールに対してバグを報告し、より使いやすい出力を生成します。 - ツールは正しい*出力を生成しています。 –

+0

まあ、私は_useful_(この場合、既存の動作に依存するたくさんのスクリプトを壊すわけではない)が正しいというよりは、通常はディストリメントのメンテナから重大な注意を払うよりも重要だと思います。さらに、 'file'はヒューリスティックに基づいていることが知られているので、どのようにして正しいのかを決めることができません。 – yugr

関連する問題