web-dev-qa-db-ja.com

-no-pieは何に使用されますか?

私はcファイルを使用したテストのためにGPROFを使用してUbuntu 17.10で作業しており、gprofで生成されたファイル(gmon.out)を実行し、-pgオプションを使用してコンパイルおよびリンクすると、空のフラットと呼び出しグラフが表示されました。しかし、これはgccのバグであり、ファイルをコンパイルして-no-pieでリンクする必要があることがわかりました。

  • コンパイル:gcc -c main.c file-1.c file-2.c -pg [-no-pie]

  • リンク:gcc -o test main.o file-1.o file-2.o -pg [-no-pie]

私はgcc 7.2バージョンを持っています。

このオプションはどのように機能し、なぜこのオプションを使用しないとグラフが空になるのですか?

7
Repikas

そのフラグは、gccに 位置に依存しない実行可能ファイル (PIE)を作成しないように指示しています。 PIEは、カーネルが実行されるたびに、バイナリと依存関係を仮想メモリのランダムな場所にロードするセキュリティ機能です。

3
Paul