An amazing variety of development tools is available for Linux. Everyone should be familiar with a few of the important ones.
Linux distributions include many solid, proven development tools; most of the same tools have been included in Unix development systems for years. These tools are neither flashy nor fancy; most of them are command-line tools without a GUI. They have proved themselves through years of use, and it will be worth your while to learn them.
If you are already familiar with Emacs, vi, make, gdb, strace, and ltrace, you are not likely to learn anything new here. However, in the remainder of the book, we assume that you are comfortable with a text editor. Also, nearly all free Unix and Linux source code is built with make, and gdb is one of the most common debuggers available on Linux and Unix. The strace utility (or a similar utility called trace or truss) is available on most Unix systems; the ltrace utility was originally written for Linux and is not available on many systems (as of this writing).
This should not be taken to mean that there are no GUI development tools available for Linux; in fact, quite the reverse is true. There are so many available that the variety can be overwhelming.
At the time of writing, two integrated development environments (IDEs) you might want to consider (and that are likely to be included with your distribution) are KDevelop (http://kdevelop.org/), a part of the KDE desk-top environment, and Eclipse (http://eclipse.org/), a Java-based cross-platform environment originally developed by IBM and now maintained by a large consortium. However, using these tools is beyond the scope of this book, and both come with full documentation.
Even though multiple IDEs are available for Linux, they have not been as popular as IDEs have been on other platforms. Even when IDEs are in use, a common rule of thumb when writing Open Source software is that your project should build without the IDE in order to make it possible for developers not comfortable with your choice of IDE to contribute to the project. KDevelop supports this by helping you build projects that use the standard Automake, Autoconf, and Libtool tools used to build many Open Source software projects.
The standard Automake, Autoconf, and Libtool tools themselves are important development tools. They were created to allow you to design your application in such a way that it can be mostly automatically ported to many operating systems. Because these tools are so complex, they are beyond the scope of this book. Also, these tools are changed regularly, and an electronic version of GNU Autoconf, Automake, and Libtool [Vaughan, 2000] is maintained online at http://sources.redhat.com/autobook/.