The GNU Make and C++ Programmer's Primer
What you'll learn
- 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.
Requirements
- 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.
Description
In our increasingly competitive marketplace, software developers often need to demonstrate superior software development expertise. In a world full of software development choices, discovering how to create high-performance software also remains an increasingly important part of what every software developer needs to understand.
Why GNU Make?
When it comes to creating vendor-independent soft-wares, the "GNU's Not Linux" (or `GNU`) `Make` and `Makefile` team remain the most popular go-to technologies. Like many, I've used GNU to reliably re-make projects that have been building for decades. -Well after other tools fail to 'make things' like they did once, GNU's Make and other tools continue to 'just work.' Guaranteed.
Make Many!
Unsurprisingly then, no matter if we are creating new software or re-building legacy applications, understanding how to use a Makefile to manage just about any creation activity is a highly sought-after skill set. From dynamically creating documents, websites as well as software, the first step in creating blazingly fast software very often requires using Make!
Why C/C++?
Yet another forever go-to technology, discovering how to create high-performance software often involves using some part - if not all - of the C/C++ programming standard. Not only does every operating system rely upon some part of the C/C++ standardization effort, but every modern, popular operating system supports both C/C++ as well as the GNU Tool-set. -Almost all other programming languages also support, if not directly rely upon the free & open C/C++ community!
From popular applications, robotics, and operating systems to the Cloud itself then at some point in time everything relies upon software written in C/C++.
What Else Will I Learn?
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.
Bug Busting
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.
Symbols
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.
You'll also enjoy practicing what you have learned by completing many hands-on activities!
And yes, you will understand all of this - and more - in less than a video-hour!
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.
Instructor
Randall Nagy is a tenured "hands-on" manager, software development engineer, author, and designer / architect. Mr. Nagy has served as a Principal Software Development Engineer at Informix (a major database company acquired by IBM,) Technical Section Leader at the US Army's Electronic Proving Ground (EPG/DTC) as well as the Principal Trainer for Borland Software Corporation.
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 encompasses multiple programming technologies & computing platforms.
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!"