Запуск консольного приложения под Linux

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Запуск консольного приложения под Linux

Сообщение metod » 03.06.2009 05:56:39

Здорово Вам времени суток :wink:

Вобщем столкнулся вот с такой проблеммой - нужно школьникам объяснить (и показать) создание консольного преложения в
IDE Lazarus под Linux.

ПРОБЛЕММА: при запуске проэкта с консольным приложением, происходит компиляция и... НИЧЕГО (тоесть IDE входит в состояние отладки, а консоль не появляется :shock: )

В общем виде запустить консольное приложение у меня всё же получилось - после сборки надо вбить в консоли адрес исполняемого файла.
!Но по сравнению с Windowos-ной реализацией консольных приложений (когда исполняемый файл сам запускает консоль), "юзабельность" данной возможности IDE падает на порядки! :evil:


Вобщем ВОПРОС: Как сделать так чтобы под linux консольные приложения запускались так же как и из под windows (и желательно на этапе сборки - тоесть под Lazarus).
metod
незнакомец
 
Сообщения: 7
Зарегистрирован: 03.06.2009 05:42:11

Re: Запуск консольного приложения под Linux

Сообщение Logo » 03.06.2009 06:19:04

Меню Run>Run Parameters... отмечаем чекетом Use launching application. В поле вбиваем строку:
/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)

Если xterm в другом каталоге, - вводим правильный путь.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Запуск консольного приложения под Linux

Сообщение metod » 03.06.2009 11:28:53

Ув. Logo.

сделал как Вы сказали (исправил путь с предложенного по умолчанию: /usr/X11R6/bin/xterm на предложенный Вами - т.к. именно там лежела файлик xterm).

Итог: Ошибка чтения файла. /usr/bin/xterm Ошибка доступа.

Тогда я открыл Lazarus под root и высё заработало как надо.

Но, как говорится, в процессе, я обратил внимание на чекет использовать дисплей (он находися сразу под чекетом использовать приложение для запуска). Снял галочку с запуска, и установил на использовать дисплей и всё заработало так как мне и надо было - тоесть в текстовом режиме.

За рание извиняюсь если я задавал вопросы как то не так.
Спосибо за совет - он помог мне в решении проблеммы.
metod
незнакомец
 
Сообщения: 7
Зарегистрирован: 03.06.2009 05:42:11

Re: Запуск консольного приложения под Linux

Сообщение Logo » 03.06.2009 20:10:17

Указывайте версию fpc, Lazarus и Linux. Ведь могут быть отличия и посложнее тех, что встретились :)
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Запуск консольного приложения под Linux

Сообщение v-t-l » 04.06.2009 09:50:21

Попробуйте в терминале выполнить
Код: Выделить всё
sudo chmod a+rx /usr/bin/xterm


Стормозил. :oops: Похоже, проблема была не в правах доступа к /usr/bin/xterm.
v-t-l
энтузиаст
 
Сообщения: 735
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Запуск консольного приложения под Linux

Сообщение metod » 09.06.2009 13:05:06

Простите - уезжал а вотпрос осталься!

Вобщем когда собираю консольконое приложение под Windows - получаестя исполняемый exe файл, который сам запускает окно для текстовой работы.
Под Linux Lazarus консольное приложение нормально запускается из под среды разработки, а вот исполняемый файл не запускается! (можно запустить из под терминала).

Вопрос:
1 Почему так?
2 Как сделать так чтобы запускалось двойным кликом мыши?
metod
незнакомец
 
Сообщения: 7
Зарегистрирован: 03.06.2009 05:42:11

Re: Запуск консольного приложения под Linux

Сообщение Attid » 09.06.2009 14:10:46

metod писал(а):1 Почему так?

потому что разные ОС и по разному устроенно

metod писал(а):2 Как сделать так чтобы запускалось двойным кликом мыши?

никак. сделать ярлык и в нем поставить галку "запускать в терминале"
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Запуск консольного приложения под Linux

Сообщение metod » 10.06.2009 07:01:16

Кстати не раз в примерах видел строчку: {$APPTYPE CONSOLE}

Но при создании консольных приложений в Lazarus такая строчка по умолчанию не появлялось, и её внесение ничего не меняло.

Зачем она? Что она делает?
metod
незнакомец
 
Сообщения: 7
Зарегистрирован: 03.06.2009 05:42:11

Re: Запуск консольного приложения под Linux

Сообщение Attid » 10.06.2009 09:55:11

это вендовая фишка. как раз чтобы окошко появлялось.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Запуск консольного приложения под Linux

Сообщение metod » 10.06.2009 11:08:34

Спасибо тебе!
metod
незнакомец
 
Сообщения: 7
Зарегистрирован: 03.06.2009 05:42:11

Re: Запуск консольного приложения под Linux

Сообщение pashkov » 07.09.2009 23:54:46

Здравствуйте, господа! У меня та же проблема, что и у metod, только манипуляции с галочками не помогают. Lazarus версии 0.9.26-4 бета, FPC - 2.2.2 на Ubuntu 9.04. Вроде бы и xterm на месте: /usr/X11R6/bin. При чем при запуске программы останов не происходит до тех пор, пока не выберешь Запуск -> Останов. Подскажите пожалуйста как справиться с этой проблемой?
pashkov
незнакомец
 
Сообщения: 6
Зарегистрирован: 07.09.2009 23:44:02

Re: Запуск консольного приложения под Linux

Сообщение v-t-l » 08.09.2009 13:18:07

Попробуйте прогнать команду запуска в отдельном терминале, заменив переменные лазаруса $(LazarusDir) $(TargetCmdLine) на реальные значения.
Например, у меня
Код: Выделить всё
$ /usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e /home/usrabo2/PROGR/lazarus//tools/runwait.sh /tmp/project1

Посмотрите, что выведется на теминал.
v-t-l
энтузиаст
 
Сообщения: 735
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Запуск консольного приложения под Linux

Сообщение Logo » 08.09.2009 14:07:12

xterm немножко не эстетичный и его можно заменить на другие эмуляторы консоли.
Например гномовский:
Код: Выделить всё
/usr/bin/gnome-terminal -t 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)


А так для KDE4 konsole:
Код: Выделить всё
/usr/bin/konsole --title 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Запуск консольного приложения под Linux

Сообщение pashkov » 08.09.2009 15:57:49

Большое спасибо за ответы! В терминале работает следующим образом. Когда делаешь так:
Код: Выделить всё
$ /usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e /usr/lib/lazarus//tools/runwait.sh /tmp/project1

Все работает как надо, появляется окно xterm, в нем вывод моей программы. А если так:
Код: Выделить всё
$ /usr/bin/gnome-terminal -t 'Lazarus Run Output' -e /usr/lib/lazarus//tools/runwait.sh /tmp/progect1

то тоже появляется окно терминала, но в нем ничего нет кроме "Press Enter", хотя программа та же.
Запустить это окошко из IDE мне пока так и не удалось. Может переменные $(LazarusDir) и $(TargetCmdLine) не установлены? Как это проверить? В параметрах запуска стоит галка "Использовать приложение для запуска":
/usr/bin/gnome-terminal -t 'Lazarus Run Output' -e '$(LazarusDir)/tools/runwait.sh $(TargetCmdLine)'
pashkov
незнакомец
 
Сообщения: 6
Зарегистрирован: 07.09.2009 23:44:02

Re: Запуск консольного приложения под Linux

Сообщение v-t-l » 08.09.2009 17:27:57

pashkov писал(а):Может переменные $(LazarusDir) и $(TargetCmdLine) не установлены? Как это проверить?

Заменить строку запуска на
Код: Выделить всё
/usr/bin/zenity --info --text='LazarusDir=$(LazarusDir)\nTargetCmdLine=$(TargetCmdLine)'


Добавлено спустя 6 минут 20 секунд:
Logo писал(а):xterm немножко не эстетичный и его можно заменить на другие эмуляторы консоли.
Например гномовский:
Код: Выделить всё
/usr/bin/gnome-terminal -t 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)


Только лучше "-x $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)", чем "-e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)".
v-t-l
энтузиаст
 
Сообщения: 735
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31

Рейтинг@Mail.ru