Запуск приложений на с++.[решено]

добавьте LDFLAGS=-no-pie
такие дела.
valentoss78
Дима, вы просто такой вопрос задали, что....
у меня к примеру, было что типа, вася, удали gcc и установи gcc multilib, не знаю зачем, но моей операционнке он был необходим, через Yoaourt, я так и оставил, gcc multilib, а не просто gcc

Честно не знаю как объяснить мою проблему, тут она описана другим человеком на англ.https://unix.stackexchange.com/questions/348983/gcc-g-compiles-code-to-shared-library-instead-of-executable

cucullus
добавьте LDFLAGS=-no-pie
Спасибо попробую, это в makefile если я не ошибаюсь.
Да и в общем то, выхлоп через терминал вам покажет ваши же ошибки, у меня на gcc носом тыкало, а вот двойной щелчок скроет, подумав, что вы выхлопа не достойны, культурно так промолчит, сволочь интелегентская. И даже если вы в UNIX-системе готовите exe-файлы, где то на ютюбе ваш тезка(вроде) говорил о пободном, гутарил, слово молвил, там он на Ubunte делал exe, говорил за подводные камни.
Dmitriy_Kniazev
Честно не знаю как объяснить мою проблему, тут она описана другим человеком на англ.
Это не проблема. Так задумано. В нашем Arch, да и в некоторых других дистрибутивах, при компиляции по дефолту установлен флаг «-pie» и, грубо говоря, сразу идет разделение mime типов - одним файлам присваивается тип EXEC (исп. файл), другим DYN (совм. исп. объектный файл).
Если посмотреть заголовки этих файлов, то увидишь
$ readelf -h ~/file1 | grep Тип:
  Тип:                               EXEC (Исполняемый файл)
$ readelf -h ~/file2 | grep Тип:
  Тип:                               DYN (Совм. исп. объектный файл)
Как подметил cucullus, устранить это можно, добавлением LDFLAGS=-no-pie.
Но, думаю, что разработчики зря это делать не будут, да и не советуют это делать, если не понимаешь сути
It's still possible to override this with -no-pie, but the fact that the mime type is misdetected should not be seen as a bug, and unless you know what you're doing, you shouldn't override it. -pie allows for some extra security protections that are fundamentally incompatible with -no-pie.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Но, думаю, что разработчики зря это делать не будут, да и не советуют это делать, если не понимаешь сути

vasek Спасибо за разъяснение, а как вы поступаете? я пишу небольшие приложения для себя на qt для облегчения некоторых процессов, не хотелось для запуска этих приложений каждый раз запускать терминал(тогда просто теряется смысл в этих приложениях). Один вариант я вижу в создании ярлыков для них, но может есть более красивое решение.
Dmitriy_Kniazev
а как вы поступаете? я пишу небольшие приложения для себя на qt для облегчения некоторых процессов
Я уже ничего не делаю, стар для этого.
EXEC файл имеет mime type application/x-executable
DYN файл имеет mime type application/x-sharedlib
(узнать можно так: $ file -i /<file> или $ xdg-mime query filetype /<file>)
Чтобы файл, имеющий тип application/x-sharedlib, вел себя как исполнимый, можно сделать его подклассом application/x-executable — как это делать, читай здесь
Лично я это не пробовал, так что гарантий дать не могу.
А конкретно для QT приложенийт (с GUI), в части флага, нашел такое
To solve it on Qt/C++ GUI Applications, add the following line on the .pro file:
QMAKE_LFLAGS += -no-pie
Ошибки не исчезают с опытом - они просто умнеют
vasek Большое Спасибо.
Кстати, некоторые ide вызывают отладчик по mime типу application/x-executable! И с pie бинарниками отладка не работает, что вызывает, скажем так, недовольство ;) А уж когда надо срочно отлаживать.... (а это, как правило, всегда;))
такие дела.
cucullus
Кстати, некоторые ide вызывают отладчик по mime типу application/x-executable! И с pie бинарниками отладка не работает
PIE появилось в gcc с 6 версии, а потому, возможно, просто не успели еще скорректировать свои проги?
EDIT 1 - в части -no-pie
Не все так просто. Привожу ссылку с форума Gentoo
If your compiler specs generate PIE code by default, then compile with the -fno-pie flag. Also, omit the -pie flag when linking.
Ошибки не исчезают с опытом - они просто умнеют
vasek, да, не зарелизили фикс просто.

Не понял, а что сложного? LDFLAGS=-no-pie (для дебага) прекрасно работает.
pie в арчевском gcc по дефолту: https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/gcc&id=5936710c764016ce306f9cb975056e5b7605a65b
такие дела.
 
Зарегистрироваться или войдите чтобы оставить сообщение.