Невозможно запустить программу C ++ с Geany или Terminal на Raspbian (Debian)

(Я не совсем уверен, можно ли здесь спросить, если нужно, перейдите в другое сообщество Stack Exchange - если возможно)

Я изучаю C ++ на своем Raspberry Pi (с Raspian (Debian), кстати), и я создал простую программу Hello World с помощью Geany IDE. Я компилирую, собираю программу и запускаю ее. Однако я получаю сообщение об ошибке:

./geany_run_script.sh: 5: ./geany_run_script.sh: ./HelloWorld: Permission denied


------------------
(program exited with code: 126)
Press return to continue

Команда компиляции - g++ -c "%f", а команда сборки - g++ -o "%e" "%f". Если вы сочтете это полезным, укажите тип файла .cxx.

Я хотел бы использовать Geany для запуска из-за удобства. К сожалению, я не могу запустить его с Терминалом как суперпользователь, даже после использования chmod +x.


person Lachlan    schedule 22.10.2014    source источник
comment
Пожалуйста, покажите права доступа к файлам HelloWorld   -  person frlan    schedule 22.10.2014
comment
Для меня g ++ всегда добавляет флаги + x в файл. Разве вы не работаете на каком-нибудь USB-накопителе с жирным или NTFS-разделом? Запустите команду mount и проверьте наличие флага noexec для устройства, на котором находится ваш текущий каталог.   -  person Arpegius    schedule 23.10.2014
comment
@Arpegius да, я работаю над USB с FAT32. Я тоже попробую   -  person Lachlan    schedule 23.10.2014
comment
В этом случае, пожалуйста, также опубликуйте, что говорит крепление для USB-устройства.   -  person frlan    schedule 23.10.2014
comment
@frlan тоже сделает это, но я не использую свой банкомат RPi, сообщит вам, когда я это сделаю.   -  person Lachlan    schedule 23.10.2014


Ответы (2)


Кажется, ваша проблема не связана с Geany IDE. Поэтому вам нужно изменить права доступа к исполняемому файлу. Попробуйте выполнить следующую команду: chmod 777 your_filename

person zh_    schedule 22.10.2014
comment
Спасибо, я тоже попробую! - person Lachlan; 23.10.2014

Чтобы запустить файл в Linux, пользователь должен иметь x либо для пользователя, либо для группы. Это выглядит как ---x--x--x или в шестнадцатеричном формате 0111 в файловых системах POSIX. Таким образом, chmod +x должен работать в большинстве систем, использующих, например, EXT [2 | 3 | 4] или XFS. Итак, ваше начало было правильным. Кстати: при компиляции файла C через Geany он уже настроен как исполняемый.

Как вы упомянули, ваш USB-накопитель отформатирован в FAT32, который не поддерживает POSIX, поэтому chmod не будет работать. Однако права доступа к файлам, например, выполнить что-либо, основано на umask, используемом для монтажа. В традиционных системах Linux это можно настроить в /etc/fstab. Используя udev или что-то еще, его также можно настроить в другом месте (читайте: чем это зависит, что вы используете для монтирования флешки)

Кроме того, mount может установить для устройства значение noexec, что в значительной степени является хорошей идеей для таких устройств, как USB-накопители или неизвестные CD / DVD. Однако, если этот флаг установлен во время монтирования, ваши файлы на этом устройстве не могут быть выполнены - разрешены только чтение и запись. Опять же, это можно установить на /etc/fstab или, может быть, где-то еще, в зависимости от того, что вы можете использовать дополнительно.

Чтобы проверить это, запустите команду mount без параметров и. Он предоставит вам список, в который должно быть включено ваше USB-устройство.

person frlan    schedule 23.10.2014