Как договориться с Geany? (./geany_run_script.sh: 5:)

IDE, VCS и прочее

Модератор: Модераторы разделов

mieczeslaw
Сообщения: 139
ОС: xubuntu 12.10

Как договориться с Geany?

Сообщение mieczeslaw »

Поставил Geany под Ubuntu 10.04. Для проверки ввожу простейший код:

Код:

#include "stdio.h" using namespace std; int main(int argc, char** argv) { printf("Hello World!"); return 0; }

Собирается без ошибок:

Код:

g++ -Wall -c "new.cpp" (в каталоге /home/mieszko/проекты) Сборка прошла успешно.

Но когда жму F5, в терминале вылезает:

Код:

./geany_run_script.sh: 5: ./new: Permission denied ----------------------------------------------- (program exited with code: 126) Press return to continue

Для какого файла нужно разрешить исполнение и почему Geany этого не делает автоматически? Порылся в гугле, такая же ошибка встречается, но решения так и не увидел.
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: Как договориться с Geany?

Сообщение deadhead »

раздел, случаем, не с noexec примонтирован?
[x] close
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Как договориться с Geany?

Сообщение diesel »

mieczeslaw писал(а):
07.05.2010 08:05
Для какого файла нужно разрешить исполнение

подозреваю что для обоих
Спасибо сказали:
mieczeslaw
Сообщения: 139
ОС: xubuntu 12.10

Re: Как договориться с Geany?

Сообщение mieczeslaw »

deadhead писал(а):
07.05.2010 10:56
раздел, случаем, не с noexec примонтирован?

Нееет, откуда такое счастье. Специально слазил в fstab - там стоит defaults.

diesel писал(а):
07.05.2010 11:03
mieczeslaw писал(а):
07.05.2010 08:05
Для какого файла нужно разрешить исполнение

подозреваю что для обоих

Хм, так собственно файла по имени new я у себя в папке ~/проекты/ не вижу. Есть new.o, new.cpp. new.geany. Есть еще папка new, но она пустая (я так понимаю, туда в более объёмных проектах будут складываться файлы типа .h).
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Как договориться с Geany?

Сообщение diesel »

mieczeslaw писал(а):
07.05.2010 12:23
diesel писал(а):
07.05.2010 11:03
mieczeslaw писал(а):
07.05.2010 08:05
Для какого файла нужно разрешить исполнение

подозреваю что для обоих

Хм, так собственно файла по имени new я у себя в папке ~/проекты/ не вижу. Есть new.o, new.cpp. new.geany. Есть еще папка new, но она пустая (я так понимаю, туда в более объёмных проектах будут складываться файлы типа .h).

угу потому что
g++ -Wall -c "new.cpp" -o new


должно быть, а так - там a.out, правда если папка new уже есть, и она пустая - ее перед этим удалить бы
Спасибо сказали:
mieczeslaw
Сообщения: 139
ОС: xubuntu 12.10

Re: Как договориться с Geany?

Сообщение mieczeslaw »

угу потому что
g++ -Wall -c "new.cpp" -o new

должно быть, а так - там a.out, правда если папка new уже есть, и она пустая - ее перед этим удалить бы

Не совсем врубился, честно сказать. Компилятору должна передаваться другая команда?
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Как договориться с Geany?

Сообщение diesel »

mieczeslaw писал(а):
07.05.2010 12:49
угу потому что
g++ -Wall -c "new.cpp" -o new

должно быть, а так - там a.out, правда если папка new уже есть, и она пустая - ее перед этим удалить бы

Не совсем врубился, честно сказать. Компилятору должна передаваться другая команда?

sorry, даже не совсем такая команда которую я написал. создайте в пустой директории new.cpp и выполните эту команду.


Код: Выделить всё

$ g++ -Wall -c "new.cpp"
$ ls
new.cpp  new.o
$



потому что(man gcc):

Код: Выделить всё

       -c  Compile or assemble the source files, but do not link.  The linking stage simply is not done.  The
           ultimate output is in the form of an object file for each source file.

           By default, the object file name for a source file is made by replacing the suffix .c, .i, .s,
           etc., with .o.

           Unrecognized input files, not requiring compilation or assembly, are ignored.


если убрать -c получим исполняемый файл a.out:

Код: Выделить всё

$ g++ -Wall  "new.cpp"
$ ls
a.out  new.cpp  new.o
$ ./a.out
Hello World!$
$


если добавить -o new получим исполняемый файл new:

Код: Выделить всё

$ g++ -Wall  -onew "new.cpp"
$ ls
a.out  new  new.cpp  new.o
$ ./new
Hello World!$
$


в последнем случае вы как раз таки и получите ./new который по идее сможет запустить ./geany_run_script.sh
Спасибо сказали:
mieczeslaw
Сообщения: 139
ОС: xubuntu 12.10

Re: Как договориться с Geany?

Сообщение mieczeslaw »

diesel писал(а):
07.05.2010 13:46

Код: Выделить всё

$ g++ -Wall  -onew "new.cpp"
$ ls
a.out  new  new.cpp  new.o
$ ./new
Hello World!$
$

в последнем случае вы как раз таки и получите ./new который по идее сможет запустить ./geany_run_script.sh

Попробовал так. Файлик new появляется, и даже запускается через консоль, но ничего не выводит. Совсем ничего. Странно, однако.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Как договориться с Geany?

Сообщение Portnov »

mieczeslaw писал(а):
14.05.2010 09:07
Совсем ничего. Странно, однако.

1) а там именно

Код: Выделить всё

printf("Hello World!");

без \n в конце?

2) у вас какая оболочка (bash, zsh)?

Если 1) да и 2) zsh, то всё нормально. Программа честно всё выводит, но не выводит символ перевода строки, а оболочка его тоже не выводит перед приглашением, но выводит символ возврата каретки (так по умолчанию работает zsh; bash по умолчанию перед приглашением выводит перевод строки, но не выводит возврат каретки). В результате ваш хелловорлд затирается приглашением оболочки. Чтобы избавиться от странностей - сделайте printf("Hello World!\n") (с \n в конце).
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
mieczeslaw
Сообщения: 139
ОС: xubuntu 12.10

Re: Как договориться с Geany?

Сообщение mieczeslaw »

Portnov писал(а):
14.05.2010 09:46
mieczeslaw писал(а):
14.05.2010 09:07
Совсем ничего. Странно, однако.

1) а там именно

Код: Выделить всё

printf("Hello World!");

без \n в конце?

2) у вас какая оболочка (bash, zsh)?

Если 1) да и 2) zsh, то всё нормально. Программа честно всё выводит, но не выводит символ перевода строки, а оболочка его тоже не выводит перед приглашением, но выводит символ возврата каретки (так по умолчанию работает zsh; bash по умолчанию перед приглашением выводит перевод строки, но не выводит возврат каретки). В результате ваш хелловорлд затирается приглашением оболочки. Чтобы избавиться от странностей - сделайте printf("Hello World!\n") (с \n в конце).

Без \n, точно. Попробую и с ним.
Оболочка - вроде бы bash. Убунтовский терминал ведь по дефолту с ним работает.
Спасибо сказали:
mieczeslaw
Сообщения: 139
ОС: xubuntu 12.10

Re: Как договориться с Geany?

Сообщение mieczeslaw »

А вот при наличии \n работает. Получается, каждый вывод на экран нужно заканчивать переводом строки, так?
И еще. А нельзя ли самой Geany указать, какой командой компилировать код? Чтобы через консоль отдельно не работать. В настройках Geany есть пути к утилитам, но там только make, браузер и т. п.
Спасибо сказали:
mieczeslaw
Сообщения: 139
ОС: xubuntu 12.10

Re: Как договориться с Geany?

Сообщение mieczeslaw »

Нашел все-таки, где задаются команды для компиляции/сборки. Меню Сборка - Параметры сборки. Теперь еще вопрос: где задаются пути к библиотекам? Например, пишу #include <cctype> - не видит. Хотя библиотека благополучно лежит в /usr/include/c++/4.4/
Спасибо сказали: