I built a simple program on my linux machine following a tutorial and it builds but I don't see why it is getting Permission Denied when I run it even though I chmod'd the whole directory recursively to 777.
Can someone help?
Did you try rebooting your computer?
Or you can lookup how to kill a program on Linux because you can not run a program already running on Windows if the file has a file lock on it. The same is likely true on Linux; but, since the file system is different it might not be true.
Tim S.
Thanks.
to kill linux process (as sudo) you can use
kill [pid]
or
killall [name of program]
or from a ui with system monitor, kill it just like you would in task manager in Windows.
I will see now if there are hanging processes. Thanks again.
No there's no running processes still.
I tried even running codeblocks as sudo and still no luck.
I don't think a reboot will help but I may try that later.
reboot did nothing.
You might post the run log and maybe someone could see the cause of the problem.
Tim S.
Thank you. Nothing runs at all on any piece of code I create (making small c programs). Down where the logs are no run log appears, only a build log, and I am clicking and Build and Run.
Here's some example code, code isn't the issue, because no matter what program I run, the Permission error comes up right away without running anything.
#include <stdio.h>
#include <string.h>
int main()
{
char a;double b;float c;int d;char *aa;char e[5];char *ee;
printf("address of a char example: %p\n",&a);//%p is "placeholder"
printf("address of a double example: %p\n",&b);//addresses are in hex
printf("address of a float example: %p\n",&c);
printf("address of an int example: %p\n",&d);
aa=&a;
printf("address of a char a example: %p\n",&a);
printf("pointer to address of char a example: %p\n",aa);
ee=e;
printf("address of a array e example: %p\n",e);
printf("pointer to address of array e example: %p\n",ee);
printf("address symbol used (optional), array e example: %p\n",&e);
ee=&e[1];
printf("address symbol used for one element, array e example: %p\n",&e[1]);
return (0);
}
It's some kind of configuration, but I haven't pinpointed it. I thought maybe codeblocks had to run as some kind of user and that user had to be in a certain group maybe, but with the linux users command I only see me, no other user. Then I though well maybe if I do an ls - l that execute and read permissions aren't set on the files, so I set them all to 777 and still no luck. Now I am thinking that maybe I need to tell codeblocks to allow my username to use it to run programs, but I don't know how I would do that. I clicked around the menus on top a little bit but haven't found anything.
That space in "c programs" is very suspicious... Could you try removing spaces from your path?
new path
Please share your values for Settings - Environment... - General settings, lower three values.
I've set mine to
/bin/sh -c
xterm -T $TITLE -e
xdg-open
trying to mimic your screenshots.
But I was unable to reproduce your issue:
/media/IDE/ProgrammingCode/0._Console/c_programs$ ls -lAtr
total 28
-rw-rw-r-- 1 commaster commaster 1080 Jun 7 07:48 c_programs.cbp
-rw-r--r-- 1 commaster commaster 738 Jun 7 07:50 main.c
drwxr-xr-x 2 commaster commaster 4096 Jun 7 07:50 .objs
-rwxrwxr-x 1 commaster commaster 14472 Jun 7 07:50 pointers_addressof
address of a char example: 0x7fffd37732df
address of a double example: 0x7fffd37732e8
address of a float example: 0x7fffd37732e0
address of an int example: 0x7fffd37732e4
address of a char a example: 0x7fffd37732df
pointer to address of char a example: 0x7fffd37732df
address of a array e example: 0x7fffd37732f3
pointer to address of array e example: 0x7fffd37732f3
address symbol used (optional), array e example: 0x7fffd37732f3
address symbol used for one element, array e example: 0x7fffd37732f4
Process returned 0 (0x0) execution time : 0.005 s
Press ENTER to continue.
P.S. Also try executing the compiled binary from the terminal using ./pointers_addressof
I also suspect that "/media/IDE/ProgrammingCode/0._Console/c_programs/pointers_addressof" is a folder, not your executable, in which case "sh" says "Permission denied" to execute a folder.
here's my shell settings. Not sure where you entered the xdg-open part.
It isn't trying to execute a folder because all I'm doing is clicking Build and Run.
Sorry, no it's not a folder. At first it was a file that I forgot to put the .c extension on but the I got the same error with the same program with a .c extension, and 5 or more other .c programs all the same error.
I'll try changing the /bin/sh to /bin/bash
I don't see full build log in your posts, please post one.
Also after a build please post the output of "ls -lAtr" in the folder where you expect the executable to be.
The output should look something like the output from Commaster.
You have to have x-es in the permissions for the executable.
changing to /bin/bash did nothing. maybe it needs to run in csh.. will try
still stuck.
Quote from: oBFusCATed on June 10, 2021, 01:58:03 AM
I don't see full build log in your posts, please post one.
Also after a build please post the output of "ls -lAtr" in the folder where you expect the executable to be.
The output should look something like the output from Commaster.
You have to have x-es in the permissions for the executable.
-------------- Build file: "no target" in "no project" (compiler: unknown)---------------
gcc -c /media/IDE/ProgrammingCode/0._Console/c_programs/pointers-addressof.c -o /media/IDE/ProgrammingCode/0._Console/c_programs/pointers-addressof.o
g++ -o /media/IDE/ProgrammingCode/0._Console/c_programs/pointers-addressof /media/IDE/ProgrammingCode/0._Console/c_programs/pointers-addressof.o
Process terminated with status 0 (0 minute(s), 2 second(s))
0 error(s), 0 warning(s) (0 minute(s), 2 second(s))
$ ls -lAtr
total 176
-rwxrwx--x 1 edward 1002 581 Nov 24 2013 FileExistance.c
-rwxrwx--x 1 edward 1002 2083 Mar 28 2016 playwav-sdl.c
drwxrwx--x 3 edward 1002 4096 Mar 4 21:21 cpp
drwxrwx--x 2 edward 1002 4096 Mar 4 21:21 'learning asynchronous programming'
-rwxr-xr-x 1 edward edward 120 Jun 5 10:36 test.c
-rwxr-xr-x 1 edward edward 16632 Jun 5 10:36 a.out
drwxr-xr-x 4 edward edward 4096 Jun 5 13:54 Ch02-01
drwxr-xr-x 2 edward edward 4096 Jun 5 14:40 pre-defined-headers
-rwxr-xr-x 1 edward edward 966 Jun 5 15:32 staticvar.c
-rw-r--r-- 1 root root 2960 Jun 5 15:33 staticvar.o
-rwxr-xr-x 1 root root 16808 Jun 5 15:33 staticvar
-rwxr-xr-x 1 edward edward 2576 Jun 5 16:25 bubblesort.c
-rwxr-xr-x 1 edward edward 3040 Jun 5 16:50 quicksort.c
-rwxr-xr-x 1 edward edward 235 Jun 5 16:58 using-strlen.c
-rwxr-xr-x 1 edward edward 732 Jun 6 07:03 array-passin-and-return-values.c
-rwxr-xr-x 1 edward edward 845 Jun 6 07:35 struct-pass-ins.c
-rwxr-xr-x 1 edward edward 788 Jun 6 08:10 struct-curlybracketsassign.c
-rwxr-xr-x 1 edward edward 745 Jun 6 08:14 struct-arrays-of-structs.c
-rwxr-xr-x 1 edward edward 951 Jun 6 08:19 struct-array-swap-elements.c
-rwxr-xr-x 1 edward edward 1433 Jun 6 08:23 struct-returnvalue.c
-rwxr-xr-x 1 edward edward 741 Jun 6 08:44 pointers-addressof.c
-rwxr-xr-x 1 edward edward 308 Jun 6 08:59 pointers-incrementing.c
-rwxr-xr-x 1 edward edward 495 Jun 6 09:07 pointers-incrementing-usingduplicatestring.c
-rwxr-xr-x 1 edward edward 585 Jun 6 09:13 pointers-incrementing-plusplusbefore-orafter.c
-rwxr-xr-x 1 edward edward 157 Jun 6 09:20 count.c
-rwxr-xr-x 1 edward edward 371 Jun 6 10:51 pointers-loops-increments-with-int_iterator.c
-rw-r--r-- 1 edward edward 2648 Jun 13 14:18 pointers-addressof.o
-rwxr-xr-x 1 edward edward 16624 Jun 13 14:18 pointers-addressof
but I have the compiler set as gcc
What happens if you run the executable from terminal?
> "no target" in "no project"
Building without a Code::Blocks project can be unhealthy indeed...
Quote from: oBFusCATed on June 14, 2021, 01:20:53 AM
What happens if you run the executable from terminal?
gcc -c pointers-addressof.c -o pointers-address-of.run
/pointers-address-of.run
bash: ./pointers-address-of.run: Permission denied
edward@zotac-desktop:/media/IDE/ProgrammingCode/0._Console/c_programs$ chmod + ./pointers-address-of.run
edward@zotac-desktop:/media/IDE/ProgrammingCode/0._Console/c_programs$ ./pointers-address-of.run
bash: ./pointers-address-of.run: Permission denied
edward@zotac-desktop:/media/IDE/ProgrammingCode/0._Console/c_programs$ sudo chmod -R 777 .
edward@zotac-desktop:/media/IDE/ProgrammingCode/0._Console/c_programs$ ./pointers-address-of.run
bash: ./pointers-address-of.run: Permission denied
edward@zotac-desktop:/media/IDE/ProgrammingCode/0._Console/c_programs$ ls -l
total 188.
.
.
-rwxrwxrwx 1 edward edward 16624 Jun 13 14:18 pointers-addressof
-rwxrwxrwx 1 edward edward 741 Jun 6 08:44 pointers-addressof.c
-rwxrwxrwx 1 edward edward 2648 Jun 14 17:34 pointers-addressof.o
-rwxrwxrwx 1 edward edward 2648 Jun 14 17:38 pointers-address-of.run
So then it's not a codeblocks issue, but compiler issue.
Quote from: Commaster on June 14, 2021, 06:32:09 AM
> "no target" in "no project"
Building without a Code::Blocks project can be unhealthy indeed...
I tried that. I started a brand new c console project, and copied the contents of my file to main.c, built it and still get permission denied.
gcc -c pointers-addressof.c -o pointers-address-of.run
/pointers-address-of.run
bash: ./pointers-address-of.run: Permission denied
-rwxrwxrwx 1 edward edward 16624 Jun 13 14:18 pointers-addressof
-rwxrwxrwx 1 edward edward 2648 Jun 14 17:34 pointers-addressof.o
-rwxrwxrwx 1 edward edward 2648 Jun 14 17:38 pointers-address-of.run
Google "GCC flags":
-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.
Why are you trying to run the object file instead of the compiled binary? Even the file size should hint at that...
Quote from: Commaster on June 15, 2021, 04:36:56 AM
gcc -c pointers-addressof.c -o pointers-address-of.run
/pointers-address-of.run
bash: ./pointers-address-of.run: Permission denied
-rwxrwxrwx 1 edward edward 16624 Jun 13 14:18 pointers-addressof
-rwxrwxrwx 1 edward edward 2648 Jun 14 17:34 pointers-addressof.o
-rwxrwxrwx 1 edward edward 2648 Jun 14 17:38 pointers-address-of.run
Google "GCC flags":
-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.
Why are you trying to run the object file instead of the compiled binary? Even the file size should hint at that...
Thanks, I'll looking at what I found looking up "GCC flags"..may take some time to look through but I'm looking.
https://developers.redhat.com/blog/2018/03/21/compiler-and-linker-flags-gcc (https://developers.redhat.com/blog/2018/03/21/compiler-and-linker-flags-gcc)
The compiled binary is the .run file. Please forgive the attempt at running the .o file. My analogy is it's like checking a drawer that I know nothing's in when trying to find a lost object in a household. sometimes I try that drawer anyway without any logic behind it. That's if its my drawer and my lost object.
Does codeblocks use the header files found in /usr/include or some other location? I tried giving myself ownership with +rwx permissions to all of the /usr/include/ header files but it didn't help.
Please stop doing what you are doing. Especially giving 777 access rights to everything, 2x especially outside your personal folders.
I provided the snippet from the google search already:
-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.
Please run the 16kb executable in the terminal, not the 2kb object file that you renamed to .run for some odd reason.
Do not mess with ownerships outside your home directory.
C::B uses the paths listed in Project -> Build options -> Search directories -> Compiler tab.
Quote from: Miguel Gimenez on June 16, 2021, 08:15:16 AM
Do not mess with ownerships outside your home directory.
C::B uses the paths listed in Project -> Build options -> Search directories -> Compiler tab.
I followed your advice by making a dir ~/code and copying my .c file to it and it does run that way. Thanks.
Is there any way around this? Maybe the way my other drive is mounted in /etc/fstab? I tried to see is I could instead use a symbolic link ~/code to get the same effect but no luck. It would just be easier if I could keep all of my c files on my share and compile/run from there. No big deal if no one answers, I see that this isn't a gcc forum but a code::blocks one, so I'm a bit off topic now.
What is the file system of the other drive? Is it linux compatible?
If it is fat or ntfs, you're probably out of luck or at least you'll have to read about umasks during mounting.
Quote from: oBFusCATed on June 19, 2021, 09:46:57 PM
What is the file system of the other drive? Is it linux compatible?
If it is fat or ntfs, you're probably out of luck or at least you'll have to read about umasks during mounting.
The other drive is a NAS appliance connected via NFS. Umasks? Ok I'll look into that, thanks.
NFS should support unix permissions, so it should be fine if you mount it correctly, but I'm not a sysadmin, so I might be wrong.
Quote from: oBFusCATed on June 19, 2021, 09:46:57 PM
What is the file system of the other drive? Is it linux compatible?
If it is fat or ntfs, you're probably out of luck or at least you'll have to read about umasks during mounting.
found this on another forum:
QuoteIn the options, when you add user it also implies noexec.
noexec will not allow any binaries on the mounted file system to be executed.
Take a look at the mount MAN page for more information concerning the available options
I think I may be on the right track
If you want to share/backup projects it is better to use something like git/svn/hg/etc.