@Alexandr_Vaschenko

G++ версий 6-7, собирает не исполняемые файлы, а разделяемые библиотеки. Почему?

Давно не брал в руки С++, и был неожиданно удивлен тем, что g++ последних версий в linux собирает разделяемые библиотеки, а не исполняемые файлы. Причём поведение это наблюдается, в том числе без указания опции -shared. Попробовал на 4.8 собрать - собирает исполняемый. В /bin большинство софта собрано как разделяемые библиотеки. Ощущение, что я что-то пропустил. Просветите, пожалуйста, с чем это связано и как жить дальше?:) А точнее собирать исполняемые файлы или запускать приложения собранные как разделяемые библиотеки.
Использую Xubuntu 17.10.
  • Вопрос задан
  • 695 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
g++ последних версий в linux собирает разделяемые библиотеки, а не исполняемые файлы

Регулярно собираю g++ (правда не под x86), ничего такого не наблюдаю.

В /bin большинство софта собрано как разделяемые библиотеки. Ощущение, что я что-то пропустил.

Это не разделяемые библиотеки, это position-independent executable, исполняемые файлы с релокациями. В дистрибутиве включили -pie по умолчанию, чтобы рандомизировать пользовательское адресное пространство. См. https://wiki.ubuntu.com/Security/Features#Built_as_PIE
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Alexandr_Vaschenko Автор вопроса
Спасибо за отклик! Путаница с разделяемыми библиотеками возникла по той причине, что в файловом менеджере у меня именно так определялся тип файлов собранных. От себя добавлю ссылку с информацией на русском. В принципе проблема решена. Что бы получить обычный исполняемый файл можно собирать с опцией -no-pie. Но можно запускать pie файлы и из bash скриптом. За одно выяснилось, что из thunar скрипты не запускаются по двойному щелчку, агитирую теперь за pcmanfm.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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