Covered Topics

Please see the list of the topics I've covered. It's located near the bottom of the page. Thanks for stopping in!!

Friday, November 19, 2010

Using gcc and g++ To Compile Programs In A LINUX Or Windows Environment

Many LINUX and most UNIX users are familiar with the gcc and g++ compilers. GCC stands for the "GNU Compiler Collection". GCC supports C, C++, JAVA, and a few others. GCC and g++ are available for free for most distributions of LINUX and UNIX. Many folks have used these utilities for both school projects as well as actual production development. The "GNU Compiler Collection" is ideal for developers, students, hobbyists, or anyone else wanting to work with or learn C/C++, JAVA, or Fortran on a shoestring and NOT shell out major funds for a commercial product. CygWin g++ and MinGW are designed for Windows machines; I've posted a link concerning this near the end of this post.

The gcc utility supports C, whereas g++ also supports C++.

GCC may be operated either from the command line or via a graphical IDE (Integrated Development Environment). Some folks also use it from within the vim or emacs text editors. I will cover the Code::Blocks IDE environment in a future post.

These are operated from the command line using commands such as the following:

gcc file.c

or

g++ file.c

Various command line switches such as -o, -g, ... tell it to save to a specific output file name, use the gdb debugger, etc.

The gcc and g++ compilers, by default, output to a file named a.out, unless you use the -o switch.

To compile a program and output to a filename of your choosing, such as "My_File", you would do the following:

gcc file.c -o My_File

To quickly test my compiler, I typed out the ever popular "Hello World" program in my text editor as shown below:

#include

main() {
printf("Hello from Karl's Lab!\n");

return 0;

}

and saved it as "Hello_Test.c" in my home directory. I wanted an output file called "Hello_1". I also wanted debugger information. Here's the command I used:

gcc Hello_Test.c -g -o Hello_1

The "-g" switch activated the gdb debugger; the -o Hello_1 part told it to name the output file "Hello_1"; "the "Hello_Test.c" part told it the name of the source file to be used.

When I typed "Hello_1" without the quotes at the command line, I received the following output:

Hello from Karl's Lab!


See a Compiler error:

In C, you must use the ";" symbol at the end of a statement. I wanted to see how gcc responds to an actual error, so I removed the ";" symbol from the "printf" line in the code snippet above, then saved and compiled the code as before. Here's the message it returned:

Hello_Test.c: In function ‘main’:
Hello_Test.c:7: error: expected ‘;’ before ‘return’

The first line of information shows the function - "main" - the error occurred in. The second line of output shows which line number the error occurred in and there is a ";" symbol missing in the code. While the actual typo was in line 4 of the code, the 'return' statement at line 7 is where the compiler errored out. With this output, you are at least given somewhere to start in trouble-shooting your code.

See the gdb debugger work:

Suppose your working directory is /home/mike/c_progs, and your executable is My_File. The command you would enter at the command line is:

gdb /home/mike/c_progs/My_File

You will get something like the following:

Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb)


At this (gdb) prompt, RUN "My_File" by typing "r" (without quotes).

(gdb) r

Starting program: /home/mike/c_progs/My_File
Hello from Mike!

Program exited normally.


This shows the program's output (Hello from Mike!), as well as that it executed without any errors or warnings.

When you are finished working, EXIT the gdb prompt by typing "q" without the quotes at the (gdb) prompt. This exits the debugger and returns you to the UNIX shell prompt.


Here are some good links on using gcc and g++ :

GCC's Homepage - Look here for the manuals to whatever version of gcc you have.
http://gcc.gnu.org/onlinedocs/

http://www.network-theory.co.uk/docs/gccintro/


Some good info for getting g++ for a Windows machine:

http://cocoon.cs.odu.edu/cocoon/~cs252/open/yourOwnCompiler/allPages.html


Here are some links to a good tutorial on the gdb debugger:

http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/Debug.html#tth_sEc3.2.1

and

http://www.cs.cmu.edu/~gilpin/tutorial/


The GCC Homepage:

http://gcc.gnu.org/

No comments:

Post a Comment

Constructive comments are welcome! Spam, or any abusive or profane comments will be deleted.