Для чего используется -no-pie?

Я работал над Ubuntu 17.10 с GPROF для некоторого тестирования с файлами c, и когда я выполняю с 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.

Как работает эта опция и почему графики пусты, если я не использую эту опцию?

1 ответ

Решение

Этот флаг говорит gcc не делать исполняемый файл независимым от позиции (PIE). PIE - это функция безопасности, при которой ядро ​​загружает двоичные файлы и зависимости в произвольное расположение виртуальной памяти при каждом запуске.

Другие вопросы по тегам