View Full Version : Linux
 
 jduke44
Sep 29, 2005, 05:38 PM
I am using VI editor at work to try to compile my programs for school in C. When I compile I get the file a.out. When I do this on the school's site I am able to just type a.out in the command line and it runs. They are using AIX (whatever that means). I cannot do that here. It keeps saying no such file. I am using Linux, that is about all I know. Can anyone point me in the direction to be able to run my file after compiling it. I hope I gave you all the info. Unfortunately I am not that familiar with Unix. Thanks.   :confused:
 LTheobald
Sep 29, 2005, 10:47 PM
http://users.actcom.co.il/~choo/lupg/tutorials/c-on-unix/c-on-unix.html
 
Looks like it's just a case of typing what you would to run a normal program in Linux - a full stop, followed by a forward slash, then the program name.  So in your case:
 
./a
 
I don't think you need the .out at the end.  Also, note the tip in the "Compiling A Single-Source C Program" about how to rename your programs to something more useful than "a.out"
 psi42
Sep 29, 2005, 11:08 PM
Just to add to that:
 
1) You do need to type ./a.out, not just ./a (unlike DOS, *nix shells don't do silly things).
 
 
When I do this on the school's site I am able to just type a.out in the command line and it runs.
 
 
This is (probably) because of the environment variable $PATH, which defines where your shell looks for commands that you type that aren't builtins.  $PATH contains a list of directories to search.  Either the directory where you compile and run stuff is in $PATH, or $PATH contains the current working directory "." (which is generally a bad idea).
 
When you want to run a command that is not in $PATH, you need to specify an absolute or relative path.  Since "." denotes the current directory, typing ./a.out tells your shell to execute the file a.out in the current directory.
 
 
Alternatively, you can modify $PATH to include the place where you compile stuff:
 
How you set $PATH depends on your shell, but on most (I think all) Bourne-compatible shells you should be able to do something like.
 
 
PATH=/usr/bin:/bin:/some/other/path:/path/to/foo
export PATH
 
 
In your case, you'd want to keep the stuff already in $PATH, so you could do
 
 
PATH=$PATH:/path/to/where/your/binaries/are
export PATH
 
 
 
 
They are using AIX (whatever that means).
 
 
AIX is IBM's proprietary UNIX operating system.
 
 
 
~psi42
 jduke44
Sep 30, 2005, 01:31 PM
Thanks guys for your help. The admin at work fixed it for me. I was trying to see if I could get an answer before I went home last night. It was to do with the path. As you probably already guessed I don't know much about Unix. I want to learn. This helps my knowledge base if anything. Thanks again.