Для чего используется -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 - это функция безопасности, при которой ядро загружает двоичные файлы и зависимости в произвольное расположение виртуальной памяти при каждом запуске.