Создание исполняемого файла Ubuntu

Я сделал программу на C с помощью компилятора gcc. Прямо сейчас он не имеет компонентов графического интерфейса. Я компилирую его с помощью makefile и запускаю в терминале. Мне нужно развернуть его, чтобы исполняемый файл был автономным. Я хочу, чтобы исполняемый файл имел значок и при нажатии запускал программу в терминале. Кто-нибудь может сказать мне, как это сделать?


person sfactor    schedule 22.04.2010    source источник


Ответы (2)


Основы

(отказ от ответственности: следующее было протестировано с kubuntu, вам может потребоваться внести некоторые коррективы для вашей системы)

На самом деле для этого существует стандарт не только для Ubuntu, но и для любого количества систем *nix. Проконсультируйтесь: http://www.freedesktop.org/wiki/Howto_desktop_files:

Предположим, у вас есть файл foo.bin, который вы хотите развернуть. Согласно Стандарту иерархии файловой системы, это хорошее место для его размещения (если вы не используете пакет менеджер) /usr/local/bin/. Вам также понадобится значок, я предполагаю, что ваш художественный талант создал foo.png, и подходящим местом для него может быть /usr/local/share/icons/.

Теперь вам нужно создать foo.desktop, который может выглядеть так:

[Desktop Entry]
Comment=My awesome fooish application 
Exec=/usr/local/bin/foo.bin
Icon=/usr/local/share/icons/foo.png
Name=Foobar
NoDisplay=false
StartupNotify=false
Terminal=1
TerminalOptions=
Type=Application

и поместите его в /usr/share/applications/.

Вы можете использовать редактор меню для создания такого файла. Найдите сгенерированный файл рабочего стола в разделе ~/.local/share/applications/.

Это должно сработать.


Другое соглашение заключается в том, чтобы помещать все под /opt/foo/ и создавать символические ссылки на /usr/local/.

Пересечь DE с Портлендом

проект Portland предоставляет xdg-* утилит командной строки, упрощающих установку значка/меню приложения. запись / ресурсный файл независимым от DE (GNOME, KDE и т. д.) способом.

См. руководство по кросс-платформенной разработке KDE и GNOME на linuxuser.co.uk.

Лучший способ

Для развертывания вам следует подумать о создании пакета *.deb. (с вашим исполняемым файлом, файлом *.desktop и значком). На эту тему есть несколько руководств, например. http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/How-to-make-deb-packages/.

Обратите внимание, что если вы используете менеджер пакетов, соглашение для расположения файла становится /usr/ вместо /usr/local/.

Пройти весь путь

Следующий шаг, если вы склонны к этому, — настроить собственный репозиторий или PPA.

person Chen Levy    schedule 22.04.2010
comment
спасибо за эту ссылку, я сделаю весь пакет -deb в будущем, но для моих неотложных нужд я просто хочу, чтобы он открывал исполняемый файл в терминале, щелкнув значок. в моем коде нет компонентов GUI. Как это может быть сделано? - person sfactor; 22.04.2010
comment
@sfactor, опция Terminal=1 Chen, включенная в файл foo.desktop, должна вызывать открытие программы в терминале. - person Nick Meyer; 22.04.2010

Ссылка Чена получает значок на рабочем столе и пункт меню; специально для Ubuntu (и вообще для любой системы, производной от Debian, по большей части) есть много хорошей документации. Он доступен по этой ссылке: https://wiki.ubuntu.com/Packaging?highlight=%28CategoryPackaging%24%29

Начните читать с "PackagingGuide". :)

Что касается запуска вашего приложения в терминале под X - на Ubuntu - просто запустите

x-terminal-emulator -e /path/to/your/command

Команда x-terminal-emulator управляется «альтернативами обновления» и будет символической ссылкой на любой предпочитаемый эмулятор xterm в системе. Для системы Kubuntu это обычно будет kterm, для обычной системы Ubuntu это, вероятно, будет gnome-terminal и т. д. Но вы можете рассчитывать на доступность x-terminal-emulator, если X установлен. И опция -e работает для всех из них, потому что это команда xterm, которую все они реализуют для совместимости.

person dannysauer    schedule 22.04.2010