Learning C++ With Linux

October 1st, 1994 by Jeff Tranter in

Jeff gives us a head-start for learning C++ on our own.
Your rating: None Average: 3.7 (35 votes)

Object-Oriented programming is a hot topic in the computer industry these days, and most experts agree that C++ is the predominant object-oriented programming language. Many programmers are familiar with the C programming language and would like to move to C++, but feel they lack the necessary tools and resources, particularly if the training has to be done on their own time.

It should therefore come as welcome news to learn that Linux makes an ideal platform for learning C++. This article covers some of the C++ programming tools available under Linux and refers the reader to additional resources, many of them freely available on the Internet.

Resources

By resources, I am referring to sources of information that will help you learn C++ and solve programming problems.

A large number of books on C++ and object-oriented design and programming are available, some better than others. The three I suggest here are among the most popular of those that are specific to C++; you may be able to borrow a copy from your local public, school, or corporate library. As these concentrate more on the C++ language itself, you may wish to supplement them with books that cover object-oriented analysis and design.

  • The C++ Programming Language (2nd edition), Bjarne Stroustrup, Addison-Wesley, 1991

  • Annotated C++ Reference Manual, Bjarne Stroustrup and Margaret Ellis, Addison-Wesley, 1990

  • C++ Primer (2nd edition), Stan Lippman, Addison-Wesley, 1989

There are a number of publications related to object-oriented programming, including the following:

  • C++ Report

  • Object Magazine

  • Journal of Object-Oriented Programming

For those with access to Usenet, these newsgroups are relevant and can be very useful, both as a source of answers to specific questions and for picking up the latest developments in C++ and object-oriented programming:

  • comp.lang.c++

  • comp.std.c++

  • comp.object

The following Frequently Asked Question (FAQ) lists are periodically posted to Usenet, and are available by anonymous FTP from Internet archive sites (listed in brackets):

  • C++ FAQ(sun.soe.clarkson.edu:/pub/C++/FAQ)

  • G++ FAQ(rtfm.mit.edu:/pub/usenet/news .answers/g++-FAQ/plain)

  • comp.object FAQ(rtfm.mit.edu:/pub/usenet/news .answers/object-faq/*)

Tools

Listed here are a number of useful C++ programming tools. If you use one of the standard Linux distributions you probably have most of these already, otherwise you can get them from a major archive site. To save time and disk space, I suggest obtaining the Linux binaries rather than building them from source.

The standard Linux C++ compiler is GNU g++ from the Free Software Foundation. It follows the evolving ANSI C++ standard and supports most features found in AT&T's cfront 3.0 compiler, including templates. It does not yet support exceptions.

Unlike cfront, which is a preprocessor, g++ generates native code. As the compiler is evolving quickly, I recommend getting the latest version. (At the time of writing most Linux distributions included version 2.5.8; version 2.6.0 had just been released.)

Gdb is the GNU symbolic debugger; you have probably used it already for debugging C programs under Linux. It supports most C++ data types and language constructs, and transparently handles C++ “name demangling”. Gdb runs well inside Emacs, or you can use the xxgdb graphical user interface under X. The documentation for gdb, in info format, describes the features specific to C++ debugging.

The programmer's editor of choice, Emacs, has a C++ mode that assists in editing. It works well in conjunction with gdb and g++, allowing you to compile and debug from within the editor.

Class Libraries

If you want to run any meaningful programs, such as examples from a textbook or code of your own, you will want some class libraries. A number of C++ class libraries are available under Linux.

The GNU libg++ library provides the standard C++ iostream class. It also includes a number of additional useful classes, from complex numbers to general-purpose stack, queue, and set objects. Since the source is freely available, you can read it to understand how the libraries were implemented. Libg++ is well documented in the included info pages.

InterViews is an object-oriented toolkit for graphical user interface programming in C++. It is included as the “iv” series in the Slackware distribution of Linux. A new version of InterViews is included in the recently released revision 6 of the X Window System (X11R6), under the name Fresco. Fresco has been sucessfully compiled with GNU g++ version 2.6.0.

NIHCL, the National Institutes of Health Class Library, is a portable C++ translation of the Smalltalk-80 class library, by Keith Gorlen of NIH. The source is available on the Internet from FTP site alw.nih.gov in the directory /pub/NIHCL. At time of writing NIHCL would not compile under g++; this should be corrected in a future release.

ObjectBuilder is a graphical user interface builder for the OI C++ toolkit. It is designed to simplify the development of X11-based user interfaces. The Linux version is freely distributed in binary format; the same product is sold commercially by ParcPlace Systems for other computing platforms.

If, as some experts recommend, you want exposure to a “pure” object-oriented language, you can investigate GNU Smalltalk. The GNU gcc compiler also supports Objective-C, another object-oriented language based on C and Smalltalk. Both of these tools are available as packages under Slackware Linux.

Conclusions

Becoming proficient in C++ takes time and effort, but you can gain a career advantage by learning it on your own using Linux. I suggest trying an iterative approach which alternates between reading books and writing your own code. You may also want to consider some formal training.

Ideally you will be able to find a mentor to guide you and answer questions as you embark on your C++ education. More likely, you will find yourself the mentor for co-workers who will learn from your mistakes. I wish you success in your journey.

(Jeff.Tranter@Software.Mitel.com) works as a professional programmer. His Linux-related interests currently include C++, LaTeX, and multimedia.

__________________________


Special Magazine Offer -- Free Gift with Subscription
Receive a free digital copy of Linux Journal's System Administration Special Edition as well as instant online access to current and past issues. CLICK HERE for offer

Linux Journal: delivering readers the advice and inspiration they need to get the most out of their Linux systems since 1994.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Anonymous's picture

codeblocks works great for

On March 27th, 2009 Anonymous (not verified) says:

codeblocks works great for windows and linux

JDG's picture

Compiler for UBUNTU

On February 5th, 2009 JDG (not verified) says:

http://ubuntuforums.org/showthread.php?t=120421

Check the abovementioned link, but if for some reason the link doesn't help or is broken, just look for other articles on Google or the UBUNTU homepage regarding installation of a C compiler.

GCC is one of the most popular compilers distributed with GNU/Linux.

Bill's picture

Looking for free Linux C++

On January 28th, 2009 Bill (not verified) says:

Anyone know where I can get a free Linux C++ compiler to run under ubuntu Linux? Maybe also IDE or the like?

Anonymous's picture

GCC :) for the first one

On April 14th, 2009 Anonymous (not verified) says:

GCC :) for the first one (g++)

ajunta or geany are nice IDEs

Anonymous's picture

c++ on linux

On April 4th, 2009 Anonymous (not verified) says:

c++ on linux

Post new comment

Please note that comments may not appear immediately, so there is no need to repost your comment.
The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <pre> <ul> <ol> <li> <dl> <dt> <dd> <i> <b>
  • Lines and paragraphs break automatically.

More information about formatting options

Newsletter

Each week Linux Journal editors will tell you what's hot in the world of Linux. You will receive late breaking news, technical tips and tricks, and links to in-depth stories featured on www.linuxjournal.com.
Sign up for our Email Newsletter

Tech Tip Videos

From the Magazine

December 2009, #188

If last month's Infrastrucuture issue was too "big" for you then try on this month's Embedded issue. Find out how to use Player for programming mobile robots, build a humidity controller for your root cellar, find out how to reduce the boot time of your embedded system, and if you're new to embedded systems find out the basics that go into one. You can also read about the Beagle Board, the Mesh Potato and a spate of other interestingly named items. And along with our regular columns don't miss our new monthly column: Economy Size Geek.







Read this issue