On 10/19/2011 06:08 PM, Joe Zeff wrote:
On 10/19/2011 09:50 AM, shailesh wrote:
> when i try to run compiled c program ("./a.out") get error
> bash: ./a.out: Permission denied
Files aren't automatically executable under Linux.
chmod u+x a.out
./a.out
will get you what you want.
gcc (well, strictly speaking it's ld but called by gcc) normally gives
executable output files exec permissions when compiling regardless of umask:
$ umask 0002; echo -ne '#include <stdio.h>\nint main(int argc, char
**argv)\n{\n\tprintf("%s\\n", "Hello World!");\n}' > x.c;
strace -f gcc
x.c 2>&1 | grep chmod
[pid 11229] chmod("a.out", 0775) = 0
Getting EACCESS on a freshly compiled binary often implies that the file
system doesn't allow executable permissions - either it's mounted with
noexec, SELinux is preventing the exec or the file system does not
support executable permissions.
Are you using removable/network storage? What's does mount say?
Regards,
Bryn.