Отключить КРУГ и значения по умолчанию PIC в gcc на человечности 17.04?

Я просто мучительно обнаруживал, что gcc, по-видимому, генерирует-fpic код по умолчанию и связывается с-fPIE по умолчанию (На человечности 17.04). Это полностью завинчивает тысячи тестов, которые я запускаю со сценариями и make-файлами, используемыми партиями различных дистрибутивов Linux. Есть ли какой-либо глобальный или способ в расчете на пользователя выключить эти значения по умолчанию и сделать компилятор обратно совместимым с поведением, которое он имел в течение многих десятилетий? Я не интересуюсь разыскиванием каждой компиляции в тысячах сценариев, которая знает, что значение по умолчанию не является-fpic и т.д. Переменная среды или два, возможно?

5
задан 3 May 2017 в 11:25

1 ответ

У меня была та же проблема, и я только что решил ее благодаря этому посту о переполнении стека .

Вы должны добавить опцию -no-pie в командную строку компиляции

без:

$ gcc main.c -o main
$ file main 
main:ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32,
BuildID[sha1]=46ada4e5e25fc120ca052c9beb8bfa5491fc6239, not stripped

с:

$ gcc main.c -o main -no-pie
$ file main
main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32,
BuildID[sha1]=17f860c6c84fc1a5771c8744b7aaaf164c219559, not stripped
2
ответ дан 23 November 2019 в 10:35

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

Похожие вопросы: