Поставил 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 этого не делает автоматически? Порылся в гугле, такая же ошибка встречается, но решения так и не увидел.
Хм, так собственно файла по имени new я у себя в папке ~/проекты/ не вижу. Есть new.o, new.cpp. new.geany. Есть еще папка new, но она пустая (я так понимаю, туда в более объёмных проектах будут складываться файлы типа .h).
Хм, так собственно файла по имени new я у себя в папке ~/проекты/ не вижу. Есть new.o, new.cpp. new.geany. Есть еще папка new, но она пустая (я так понимаю, туда в более объёмных проектах будут складываться файлы типа .h).
угу потому что
g++ -Wall -c "new.cpp" -o new
должно быть, а так - там a.out, правда если папка new уже есть, и она пустая - ее перед этим удалить бы
-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.
Если 1) да и 2) zsh, то всё нормально. Программа честно всё выводит, но не выводит символ перевода строки, а оболочка его тоже не выводит перед приглашением, но выводит символ возврата каретки (так по умолчанию работает zsh; bash по умолчанию перед приглашением выводит перевод строки, но не выводит возврат каретки). В результате ваш хелловорлд затирается приглашением оболочки. Чтобы избавиться от странностей - сделайте printf("Hello World!\n") (с \n в конце).
Если 1) да и 2) zsh, то всё нормально. Программа честно всё выводит, но не выводит символ перевода строки, а оболочка его тоже не выводит перед приглашением, но выводит символ возврата каретки (так по умолчанию работает zsh; bash по умолчанию перед приглашением выводит перевод строки, но не выводит возврат каретки). В результате ваш хелловорлд затирается приглашением оболочки. Чтобы избавиться от странностей - сделайте printf("Hello World!\n") (с \n в конце).
Без \n, точно. Попробую и с ним.
Оболочка - вроде бы bash. Убунтовский терминал ведь по дефолту с ним работает.
А вот при наличии \n работает. Получается, каждый вывод на экран нужно заканчивать переводом строки, так?
И еще. А нельзя ли самой Geany указать, какой командой компилировать код? Чтобы через консоль отдельно не работать. В настройках Geany есть пути к утилитам, но там только make, браузер и т. п.
Нашел все-таки, где задаются команды для компиляции/сборки. Меню Сборка - Параметры сборки. Теперь еще вопрос: где задаются пути к библиотекам? Например, пишу #include <cctype> - не видит. Хотя библиотека благополучно лежит в /usr/include/c++/4.4/