G++ версий 6-7, собирает не исполняемые файлы, а разделяемые библиотеки. Почему?
Давно не брал в руки С++, и был неожиданно удивлен тем, что g++ последних версий в linux собирает разделяемые библиотеки, а не исполняемые файлы. Причём поведение это наблюдается, в том числе без указания опции -shared. Попробовал на 4.8 собрать - собирает исполняемый. В /bin большинство софта собрано как разделяемые библиотеки. Ощущение, что я что-то пропустил. Просветите, пожалуйста, с чем это связано и как жить дальше?:) А точнее собирать исполняемые файлы или запускать приложения собранные как разделяемые библиотеки.
Использую Xubuntu 17.10.
g++ последних версий в linux собирает разделяемые библиотеки, а не исполняемые файлы
Регулярно собираю g++ (правда не под x86), ничего такого не наблюдаю.
В /bin большинство софта собрано как разделяемые библиотеки. Ощущение, что я что-то пропустил.
Это не разделяемые библиотеки, это position-independent executable, исполняемые файлы с релокациями. В дистрибутиве включили -pie по умолчанию, чтобы рандомизировать пользовательское адресное пространство. См. https://wiki.ubuntu.com/Security/Features#Built_as_PIE
Спасибо за отклик! Путаница с разделяемыми библиотеками возникла по той причине, что в файловом менеджере у меня именно так определялся тип файлов собранных. От себя добавлю ссылку с информацией на русском. В принципе проблема решена. Что бы получить обычный исполняемый файл можно собирать с опцией -no-pie. Но можно запускать pie файлы и из bash скриптом. За одно выяснилось, что из thunar скрипты не запускаются по двойному щелчку, агитирую теперь за pcmanfm.