Topic:   C/C++ tutorials   (Read 50020 times)


0 Members and 2 Guests are viewing this topic.

GMG Kurt


  • GMG-er

  • **


  • Posts: 682

  • Sorry for being such a noob
Re: C/C++ tutorials
« Reply #15 on: September 05, 2011, 10:37:55 AM »
part2: tut1: compiling with gcc
http://gcc.gnu.org/install/index.html
http://en.wikipedia.org/wiki/COMMAND.COM

This is in no way a tutorial of how to use Xcode. You'll pick that up through my videos, and trial-and-error. This is how to compile from the command line. So that you know what happens behind the scenes on Xcode.

for Mac you already have the gcc compiler if you downloaded Xcode, but can get it separate by downloading it form above. On Windows you must download it from above, unless you have it from the Windows version of Xcode.

Okay now that you have the actual software lets begin. Open a simple text document (textedit or notepad) and change it to simple text (only necessary with textedit.) Now type this into it

Code: [Select]
main()
{
     printf("hello world.\\n");
}
you should recognize this as our hello world application from before.

Anyways save this as main.c into your user folder. Notice the extension is '.c'. Now open up the command prompt (Terminal for mac and cmd for windows). For Mac it's an application in the utilities folder, in your applications folder. For Windows type ‘cmd’ into run, you can also find it at your systems32 folder, and you can make one (good for gaining access to computer internals when your unauthorized) by opening note pad and typing COMMAND.COM into the file and saving it as an .exe . you should change your default window to something cooler than black and white, with ms-dos you can use the command ‘color’ and with terminal you can set it in Terminal > Preferences .

Before going on I should mention that I will passingly mention a few UNIX commands, and they of course won’t work on your pc machine, but you can find similar if not identical commands at the wikipedia link.

Another thing before going on a mac you can type in
Code: [Select]
man gcc
and assuming you understand they’re archaic documentation you can scrap the rest of this tutorial!

Now lets get down to business. Assuming you saved it too your user folder terminal starts up there by default, but if you didn’t change the directory to that folder using the ‘cd’ command. (note that the words directory and folder are synonymous.) and type
Code: [Select]
gcc main.c
this compiles and links your application and gives it the default name ‘a.out’. Your machine still retains the source file (main.c).  Most tutorials say just to type ‘a.out’ to run it, but for some reason that doesn’t work for me. The command that will always work is:
Code: [Select]
open -a terminal a.out
that basically means open a.out through the command prompt (terminal.) Since I don’t have a pc I can’t even begin to help you with this, but I confer with Ryan (Lombardi), and we’ll make an edit here for the pc users, and notify you. so you’ll see hello world written probably written in your boring black and white if you didn’t listen to me. just close it and go back to your main window. There are tons more options for you to use. Before going on I’d like to remind you that you can use multiple files to create your application. These files are called modules. lets say your finished with one and don’t need to use it anymore, or want to let a friend use it without seeing whats inside of it. you can compile it without linking, by making an object file.
Code: [Select]
 gcc -c main.c 
this creates main.o an object file that you can latter link to your program just like it was a source file. The upside to this is, if your machine is slow, or your program is huge then you don’t have to have the machine compile the whole application every time, just the source files, it only has to link the object files. (which is a relatively quick process.)

You can also define variables to be passed to the application at the preprocessing stage. This won’t seem very important to you unless your already familiar with the #ifdef statement, but I will elaborate on it’s importance during the discussion of the preprocessor.
It’s called the -D switch. The syntax is simple
Code: [Select]
gcc -D DEBUG main.c
or
Code: [Select]
gcc -D MACHINE = 1 main.c
fig1 makes an uninitialized variable DEBUG, and fig2 makes a variable MACHINE initialized to 1. Again you can’t see the infinite importance of this, but trust me its very important.

Optimization command -O (capital o) switch. just place it before every thing on the very last compile. Simply optimizes it.

The last, and probably most used command is the -o switch (lower case o). It allows you to name the program.
Code: [Select]
gcc main.c -o program
This makes a compiled, and linked C program called “programâ€

On two parting note gcc syntax is identical for compiling C, C++, Objective-C, Objective-C++, and I believe java, but I don’t know anything java so don’t take my word on that one.
The command you may see some C programmers learn ‘cc’ is identical to gcc, but I think it only works with C programs.

P.S. This video for this one will be a little late, because I have to try a screen emulation with Ryan (Lombardi) so the windows people don’t feel left out. Wow I never thought i’d be accommodating for pc!
Just your average Weekend Warrior.
Yes I know I have bad spelling, it's what makes me such a good programmer!

"Old art, weather magnificent or wretched, is always the raw material of new art. The artist's job, though, is to

GMG Kurt


  • GMG-er

  • **


  • Posts: 682

  • Sorry for being such a noob
Re: C/C++ tutorials
« Reply #16 on: September 18, 2011, 06:29:33 PM »
by bahamut beard I've done it! sweet lord this changes everything! here comes root user kurt!

okay now you may be wondering what I'm doing not posting tutorials. I've been trying to find out how to use your program by just typing it in on the command line! I've finally found out how, and will wright the tutorial tomorrow as a part 2 supplementary, and lump last weeks lesson with it as the video.
Just your average Weekend Warrior.
Yes I know I have bad spelling, it's what makes me such a good programmer!

"Old art, weather magnificent or wretched, is always the raw material of new art. The artist's job, though, is to

GMG Kurt


  • GMG-er

  • **


  • Posts: 682

  • Sorry for being such a noob
Re: C/C++ tutorials
« Reply #17 on: September 22, 2011, 05:52:58 PM »
part2: tut2

So I’m finally into the loop of school, and writing these tutorials. This one is more of a part 2 to part2:tut1, but I’ll differentiate because this one is UNIX systems only. (Just too be clear that means Mac, and linux, but you activate root differently in linux.) You could of course do this with the sudo command, but If your doing this a lot you should activate the root account. Okay so its simple concept really. All commands in Terminal are C applications. You can run them without specifying that they need to be opened because it is implied. To imply your program should be included in this it simply has to be moved into the folder the holds all of these built in commands. This folder is called Bin. A seemingly innocent task, until you search your mac and find it nowhere. It is hidden, and you can only find it through the command prompt. It is in the root folder also known as ‘/’ or Macintosh HD. You can try to view in in finder, but to no avail. Unless you unhide it, which would be an undesirable, but very possible feat, I’ll give you the command, but implore you not to use it
Code: [Select]
 chflags nohidden /* 
Back to the legit stuff. For curiosities sake lets view the innards of your mac
Code: [Select]
 ls / 
You’re now seeing the fabled hidden files of your mac. navigate into the bin folder
Code: [Select]
 cd /bin 
and view it if you’d like
Code: [Select]
 ls 
now try to move your compiled, and linked program into it
Code: [Select]
 mv ~/desktop/proj /bin 
What is this! No permission! So now you need to upgrade your account your account. Now there are three types of accounts on a Mac: The guest, administrator, and root or superuser (meaning the same thing) You’re all administrators. Unless your doing this at work... which you shouldn’t cause you’ll get fired for hacking ;) You have to become the most powerful, and un restrained user to modify bin, you must become root. okay they’ve changed it with every operating system, which really ticks me off. Honestly I can’t reword anything about rooting different systems, or explain all of them. So at this time please google it. So sorry, but its kinda beyond me.

So now your super user account is active. You’ve set the password to something archaic, yet quick to type, and we’re ready to roll. Lets bust out that super user account with
Code: [Select]
 su root 
type in your password, and lets roll! Okay its not that exciting, I mean you can do anything in the whole wide world now, including hacking you pals mac, I believe. Not my area of expertise. Back to bin. So your root now, you should notice your host changing, and a new home folder (what the tilde (~) actually means) it is now /var/root so if you want to navigate to the desktop you have to wright out /Users/Manion/desktop. With your own user of course. so move it using the mv command, or cp command to copy it.
Code: [Select]
 mv old new 
of in the specific
Code: [Select]
 mv /Users/Manion/Desktop/proj/a.out /bin/a.out 
You can rename the file simultaneously, by changing its name in the new file path. Make sure your only move the executable (default name a.out). heres all the commands you must type to make it work
Code: [Select]
su root
mv old new
exit
logout
or you can use
Code: [Select]
sudo mv old new
logout

For the password prompt type in your user password. NOTE: the exit command in the first example takes you out of the root user account.

To use you program just type in the name of the command (ie. a.out if thats what its named in bin)

P.S. tutorials will be more regular now sorry for the interruption of the first week of school ;D
Just your average Weekend Warrior.
Yes I know I have bad spelling, it's what makes me such a good programmer!

"Old art, weather magnificent or wretched, is always the raw material of new art. The artist's job, though, is to