LinuxForum.Fans
Тема

CodeBlocks

Автор: Konlor95 7 сообщений 2031 просмотров
#368655

Пишу программу Hello World.

text

#include "iostream"
using namespace std;

int main() { cout << "lalalla!"; //system("pause"); return 0; }

При запуске выходит это
[console] sh: 1 /media/DATA/Projects/C++_Projects/03/main: Permission denied
Process returned 123 (0x7e) execution time : 0.001 s
Press Enter to continue.
[/console]

В Visual Studio все работает.

#368669
"Konlor95" написал:
sh: 1 /media/DATA/Projects/C++_Projects/03/main: Permission denied

вы собираете НЕ ТУДА.

У каждого файла в Linux есть права доступа, в т.ч. право использования(execute). Компилятор(точнее линкер) знает об этом, и устанавливает его.

Однако. В целях безопасности, все ФС смонтированные юзером(man mount, see users) по умолчанию монтируются с фичей noexec(а ФС типа vfat с fmask=0177). Таким образом права исполнения у файлов нет.

Попробуйте разместить проект в каталоге $HOME, и проверьте, что-бы в его опциях монтирования не было noexec.

Ну также вы можете сменить fmask=0077 для этой флешки. Ещё можно (если вы рут) отправить файл в /usr/local/, и там поставить ему chmod 0755 main, хотя это опасно конечно.

#368774

Спасибо, в домашнем каталоге работает. А как убрать опцию noexec ? Мне надо хранить файлы на локальном диске D.

#368777
"Konlor95" написал:
А как убрать опцию noexec ?

/etc/fstab

#368782

И он не находит заголовочные файлы для gtk

#368791

А devel пакет libgtk установлен?

#368799
"Konlor95" написал:
А как убрать опцию noexec ?

это смотря где. Да, стандартно в /etc/fstab, но флешек там обычно нет.

"Konlor95" написал:
Мне надо хранить файлы на локальном диске D.

если общий с маздаем(ntfs), то

text
       uid=value, gid=value and umask=value
              Set  the  file  permission on the filesystem.  The umask value is given in octal.  By
              default, the files are owned by root and not readable by somebody else.

т.е. нужна опция umask=0000 (если я конечно ничего не путаю, т.к. маздая у меня нет чтоб проверить)

ntfs НЕ умеет exec, и потому ставит право execute так, как написано в umask (точнее оно инвертирует umask, если umask=0000, это значит -- всё разрешено).

"Konlor95" написал:
И он не находит заголовочные файлы для gtk
точнее. Какие?

Вангую, что в Makefile надо добавить
text
CFLAGS=-c -Wall -O0 `pkg-config --cflags gtk+-3.0`
LDFLAGS=`pkg-config --libs gtk+-3.0`
Войдите или зарегистрируйтесь, чтобы ответить.