In this section I describe how I set up my Raspberry Pi to do all the programming described in this book. Yes, I really have run all the programs on both my original Raspberry Pi 1 Model B and my new Raspberry Pi 3 Model B. You may choose to do things differently, depending on which Raspberry Pi you are using and your personal preferences.

This book is based on using the Raspbian operating system. I used NOOBS to install Raspbian. It includes most of the programming tools you will need, but there are a couple that you should add to make documentation available to you. Here are the packages that I added:

• gcc-x.y-doc, where “x.y” is the version number of gcc, provides documentation for the GNU compiler.

• binutils-doc provides documentation for the GNU assembler, as (sometimes called gas).

You can determine the version number of gcc with the apropos gcc command:

pi@rpi3:~ $apropos gcc arm-linux-gnueabihf-gcc-ar (1) - a wrapper around ar adding the - plugin option arm-linux-gnueabihf-gcc-nm (1) - a wrapper around nm adding the - plugin option arm-linux-gnueabihf-gcc-ranlib (1) - a wrapper around ranlib adding the - plugin option c89-gcc (1) - ANSI (1989) C compiler c99-gcc (1) - ANSI (1999) C compiler g++-4.9 (1) - GNU project C and C++ compiler gcc-4.9 (1) - GNU project C and C++ compiler gcc-ar (1) - a wrapper around ar adding the - plugin option gcc-ar-4.9 (1) - a wrapper around ar adding the - plugin option gcc-nm (1) - a wrapper around nm adding the - plugin option gcc-nm-4.9 (1) - a wrapper around nm adding the - plugin option gcc-ranlib (1) - a wrapper around ranlib adding the - plugin option gcc-ranlib-4.9 (1) - a wrapper around ranlib adding the - plugin option  This display clearly shows that $x.y = 4.9$ on my Raspberry Pi at this time. Yours may have a different version. To make my life a little easier, I created symbolic links to the C and C++ compilers like this: pi@rpi3:~$ which gcc-4.9
/usr/bin/gcc-4.9
pi@rpi3:~ $sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc pi@rpi3:~$ sudo ln -s /usr/bin/g++-4.9 /usr/bin/g++

pi@rpi3:~ \$ which gcc
/usr/bin/gcc


The which command shows where the program is located.

You will also use a text editor for all your programming. Do not use a word processor. Word processors add a lot of hidden control characters to format the text. These hidden characters confuse compilers and assemblers, causing them not to work.

Raspbian comes with several simple text editors already installed. Go to www.raspberrypi.org and look under “HELP.” Click on “DOCUMENTATION” and then on “LINUX.” Then click on “Text editors” under “Usage.” I have found that many students like GNU Nano because it is easy to use.

You have probably learned how to program using an Integrated Development Environment (IDE) , which incorporates several programs within a single user interface:

Text Editor

Used to write the source code and save it in a file.

Compiler

Translates the source code into machine language that can be executed by the CPU.

Integrates all the functions in your program, including externally accessed libraries of functions, and to determine where each component will be loaded into memory when the program is executed.