The GNU Programmer's Primer

Creating Makefiles, Applications, and Libraries using the GNU Tool Set
English [Auto]
Understand how to use GNU `make` to manage common software development activities.
Learn the "critical path" options most frequently required to build C++ applications.
Use GNU's `dbg` and `xxgdb` tools to perform stack-based debugging.
Create libraries designed to be shared between multiple C++ applications.
Understand the difference between static & dynamic library types.
Discover how GNU's `make` uses rules, dependencies, recipes, and macros to create software.
Learn how to include, inspect, and remove source code from your debugging sessions.


  • Students must be able to start & exit a "command line" or "console" user interface.
  • Students should be able to run GNU's `make` from a `bash` shell, or from Cygwin.
  • GNU's C++ Tool Set must also be installed.


No matter if we are creating new software or building legacy applications, understanding how to leverage GNU's classic tool-set to manage content creation activities is a highly sought-after skill set.

The de-facto standard in building everything from operating systems to millions of Open-Source Projects, these lessons begin by reviewing how to both create, as well as to use `Makefiles.`

Demonstrating how to compile, link & test a basic C++ program, the training will also cover the most common set of g++ / c++ operations. Students will create a C++ application, related Makefile, as well as library. GNU's basic compiler, linker, and program-creation process, artifacts, and naming conventions will be reviewed.

Because GNU's debugger is important to understand, the operation of both gdb, as well as the graphical xxgdb tools will be explored. Demonstrating how to both include, as well as remove, source code & symbols from your application is also presented.

Finally, students will also learn what `name mangling` is, as well as how to use GNU's tool-set to decipher "decorated" classes and function names.

Who this course is for:

  • First-time C/C++ software developers on Linux, macOS, or Cygwin on Microsoft Windows.
  • New software professionals who are interested in learning how to make static and dynamic libraries.
  • Students who have never used the classic GNU "MAKE," "LINK," "GPP," and / or related produce suite.
  • Software professionals interested in creating common variables, targets, and other "Recipe" coventions for GNU Make.

Course content

1 section11 lectures58m total length
  • Introduction & Overview
  • Makefile Concepts
  • Making C++
  • The Program Compilation Process
  • Basic System Signals & Make Integration
  • More C++ Options
  • Library Creation & Management
  • C/C++ Logging
  • Graphical GNU Debugging
  • GNU Console Debugging
  • Handy Options & Resources


Software Engineer & Educator
Randall Nagy
  • 3.9 Instructor Rating
  • 502 Reviews
  • 43,656 Students
  • 25 Courses

Randall Nagy is a tenured "hands-on" software development engineer, author, and software designer / architect.  He has served as both a Principal Software Development Engineer at Informix (a major database company acquired by IBM,) as well as the Principal Trainer for Borland.

Mr. Nagy's "Linked In" recommendations testify to a 30+ year track record of excellent personal communication skills, design & analysis abilities, as well as superior consulting, coding, & training results.

Though tenured, Mr. Nagy is most often described as being authoritatively technical, yet very personable & easy to get along with.

The author of over 30 on-line Udemy titles and 50+ open source projects, Mr. Nagy's hands-on experience includes topics such as C/C++, Python, MicroPython, AWS, OAuth 2.o, SO / SOA, Security, Testing, UML, Java/JEE, .NET (C# and VB.NET), LAMP, SQL, Hadoop, jQuery, PHP, HTML 5, Android, OOA/OOD, UML, DoDAF and more. Maintaining techniques in embedded engineering, Mr. Nagy has experience creating custom training for such expert-level, high-performance technologies as Modern C/C++, Apache Spark, and IBM Rhapsody.

Technically speaking, "... from the best Service-Oriented practices to embedded engineering, I maintain an extensive hands-on skill set. I have both designed and personally implemented architectures from the client to the server, well into the RFC Layer.

From writing for BYTE Magazine to books on Amazon, I have helped thousands of students master tough technical concepts. I hope you will like our training!"