cucullus |
|
Темы:
268
Сообщения:
3554
Участник с: 06 июня 2007
|
добавьте LDFLAGS=-no-pie
такие дела.
|
Dmitriy_Kniazev |
|
Темы:
3
Сообщения:
20
Участник с: 18 июня 2017
|
valentoss78 Честно не знаю как объяснить мою проблему, тут она описана другим человеком на англ.https://unix.stackexchange.com/questions/348983/gcc-g-compiles-code-to-shared-library-instead-of-executable cucullusСпасибо попробую, это в makefile если я не ошибаюсь. |
valentoss78 |
|
Темы:
15
Сообщения:
440
Участник с: 26 апреля 2016
|
Да и в общем то, выхлоп через терминал вам покажет ваши же ошибки, у меня на gcc носом тыкало, а вот двойной щелчок скроет, подумав, что вы выхлопа не достойны, культурно так промолчит, сволочь интелегентская. И даже если вы в UNIX-системе готовите exe-файлы, где то на ютюбе ваш тезка(вроде) говорил о пободном, гутарил, слово молвил, там он на Ubunte делал exe, говорил за подводные камни. |
vasek |
|
Темы:
47
Сообщения:
11853
Участник с: 17 февраля 2013
|
Dmitriy_KniazevЭто не проблема. Так задумано. В нашем Arch, да и в некоторых других дистрибутивах, при компиляции по дефолту установлен флаг «-pie» и, грубо говоря, сразу идет разделение mime типов - одним файлам присваивается тип EXEC (исп. файл), другим DYN (совм. исп. объектный файл). Если посмотреть заголовки этих файлов, то увидишь Как подметил cucullus, устранить это можно, добавлением LDFLAGS=-no-pie.Но, думаю, что разработчики зря это делать не будут, да и не советуют это делать, если не понимаешь сути
Ошибки не исчезают с опытом - они просто умнеют
|
Dmitriy_Kniazev |
|
Темы:
3
Сообщения:
20
Участник с: 18 июня 2017
|
vasek vasek Спасибо за разъяснение, а как вы поступаете? я пишу небольшие приложения для себя на qt для облегчения некоторых процессов, не хотелось для запуска этих приложений каждый раз запускать терминал(тогда просто теряется смысл в этих приложениях). Один вариант я вижу в создании ярлыков для них, но может есть более красивое решение. |
vasek |
|
Темы:
47
Сообщения:
11853
Участник с: 17 февраля 2013
|
Dmitriy_KniazevЯ уже ничего не делаю, стар для этого. 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), в части флага, нашел такое
Ошибки не исчезают с опытом - они просто умнеют
|
Dmitriy_Kniazev |
|
Темы:
3
Сообщения:
20
Участник с: 18 июня 2017
|
vasek Большое Спасибо. |
cucullus |
|
Темы:
268
Сообщения:
3554
Участник с: 06 июня 2007
|
Кстати, некоторые ide вызывают отладчик по mime типу application/x-executable! И с pie бинарниками отладка не работает, что вызывает, скажем так, недовольство ;) А уж когда надо срочно отлаживать.... (а это, как правило, всегда;))
такие дела.
|
vasek |
|
Темы:
47
Сообщения:
11853
Участник с: 17 февраля 2013
|
cucullusPIE появилось в 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.
Ошибки не исчезают с опытом - они просто умнеют
|
cucullus |
|
Темы:
268
Сообщения:
3554
Участник с: 06 июня 2007
|
vasek, да, не зарелизили фикс просто. Не понял, а что сложного? LDFLAGS=-no-pie (для дебага) прекрасно работает. pie в арчевском gcc по дефолту: https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/gcc&id=5936710c764016ce306f9cb975056e5b7605a65b
такие дела.
|