12Chapter1 • Introduction to Software Development
1.2.4Compilers and Assemblers
Compilers and assemblers are the core development tools because they convert source
code to executable form. Quality of compilers does affect the output code. For example, some
compilers can do much better code optimization compared to others. If you are doing some
cross-platform development, then your compiler should support code generation for the target
machine as well.
GNU compilers collection, more commonly called GCC, is a comprehensive set of com-
pilers for commonly used languages including the following:
•C
•C++
•Java
•Fortran
In addition to GCC, you can find a lot of other open source compilers available for Linux.
Some of these are introduced in Chapter 3.
GNU utilities set, also known as binutils, includes GNU assembler and other utilities that
can be used for many tasks. GNU assembler is used whenever you compile a program using
GNU compiler.
1.2.5Debuggers
Debuggers are the also an important part of all development systems. You can’t write a
program that is free of bugs. Debugging is a continuous part of software development and you
need good tools for this purpose. GNU debugger, more commonly known as GDB, is a common
debugger. Many other debuggers are also built on this debugger. The GNU debugger and some
other debuggers will be introduced later in this book.
1.2.6Version Control Systems
The revision control system is a must for any serious development effort where multiple
developers work on a software product. The most popular version control system on Linux is
known as Concurrent Versions System or CVS. CVS allows many people to work on files at the
same time and provides a central repository to store files. Developers can check out files from
this repository, make changes and check the files back into the repository. CVS also works with
editors like GNU Emacs.
When multiple developers are modifying the same file at the same time, conflict may
occur between different changes made by multiple developers. When a conflict is detected in the
files being checked in, CVS provides a mechanism to merge the files appropriately.
CVS can be used over secure links as well. This is required when developers are not phys-
ically located at the same place. A server on the Internet can be used to provide secure access to
the central software repository.