GNU stands for the recursive acronym “GNU is Not Unix”. It started in the 1980s with the goal of providing free software and tools under the GNU General Public License. GNU started out as a free operating system to compete with Unix, which was proprietary. GNU also contains a collection of tools. According to Wikipedia, as of November 2015, GNU contained 466 tools in total, including the popular GCC, GDB, Bash shell, GNOME, and GNU C library. GNU tools are extremely popular in the industry, especially in the 80s and 90s. In fact, Linux was built with GNU tools, and today, some even call it “GNU/Linux”.
GDB stands for “GNU Debugger” and is a debugger that runs on many Unix-based systems. It has extensive features, including modifying variables during execution, catching exceptions, and calling functions. Its “remote debugging” ability makes it a popular debugger from debugging programs run on embedded systems. It also interfaces with several IDEs, including Visual Studio, Code::Blocks, Eclipse, and NetBeans.
GCC stands for “GNU Compiler Collection” and is a set of tools for building source files into binaries. It includes not only a compiler but also a preprocessor, an assembler, and a linker. GCC enables compilation of several languages, such as C and C++ by invoking $gcc and $g++ respectively. GCC is also frequently used with Makefiles to facilitate building large projects.
Linux is an open-source operating system kernel that was based on the Unix operating system. There are many different Linux distributions, such as Ubuntu, Debian, and Fedora, the primary difference between them being their different package managers and the extent of customization each offers. Linux is usually not used in Desktop form since customers tend to install Windows or OS X instead. However, Linux is frequently installed on servers, with estimates that 50-80% of all servers are Linux-based. A derivative of Linux is Android, which has recently gained lots of traction in embedded development.