Linux For Application Developer

Linux for Application Developers
  • Soujanya
  • 8 (Registered)
  • (3 Reviews)


This course, teaches embedded skills using an Native as HOST and QEMU as an embedded environment.  Unlike most Linux courses, that use PC’s as the target, this course uses ARM9 EMULATOR that’s a proven way to experiment most of the embedded Linux build and debugging concepts. This program is fast paced.


3 days

Course Objectives

  • Understand the Linux stack and kernel architecture and application build
  • Understand the embedded development and build tools available on Linux
  • Linux startup techniques
  • Building Embedded Linux system for ARM
  • Learn to configure, build, deploy and test the embedded application
  • Investing Application and secure practice
  • Profiling and Code coverage
  • Memory leak
  • Buffer overflow and corruption
  • Tracing applications
  • debugging using GDB

Target audience:

Experienced C programmers and developers intending to explore How Linux can be used is real time and embedded environment


  • Good knowledge of C programming
  • Good knowledge of basic UNIX/Linux commands

Lab requirements:

  • An internet ready laptop/workstation with high-end configuration (Intel Core i5 or above with at least 4 GB of RAM) is recommended, with windows or macOS with pdf readers,
  • Latest Virtual Box preferred to be pre-Installed on their respective OS. One can visit and choose their HOST(OS) specific package.
  • Participants must ensure that at least 40 GB of free disk-space is available on their laptops/workstations – as this is required for installing a pre-configured Linux setup as a Virtual Box appliance for hands-on practice session in this training program
  • The speaker/trainer would carry the preinstalled Linux disk image
  • Participants can also choose to work on an existing Linux environment accessible to them with support for root access and ability to fully customize their existing setup and reboot them.
  • Whiteboard, markers and scribble pads + pens for participants.
  • A high-resolution (1024×768 or above) LCD Projector with support to connect to trainer’s laptop (Apple MacBookPro/Win/Linux).
  • Whiteboard + Markers

Detailed Coverage

  • Linux kernel Overview, Application mapping with kernel context
  • GNU Toolchain components
  • Build (Preprocessor, Compliers, Assemblers, Linking)
  • C Application Build essentials
  • C program lifecycle using gnu tool chain
  • Build style and dependencies
  • Understating the memory regions of an executable
  • The executable layout
  • Build Styles
  • Static build
  • Dynamic build
  • Non main build strategies
  • Dynamic Linking
  • Managing Library
  • Static library
  • Dynamic library
  • Real name
  • soname and versioning
  • Hacking and overriding
  • Using API for dynamic linking
  • Build Styles
  • View on various build system
  • Target, Dependency and sample Builds
  • Cross Build for ARM on Linux
  • Testing application
  • Building the Linux for SYSTEM for ARM
  • Setting up Target specific tool chain
  • Understanding a brief of build cross tool chain from scratch
  • Available tool chains from board vendors and its OEM
  • Different version of GCC and its effect on a CPU series (ARM)
  • Installing and setting up arm cross tool chain
  • Setting environment
  • Building the native application for ARM target
  • Brief on using QEMU commands and test prebuild images
  • Experimenting for SYSTEM IMAGE for ARM
  • Building and testing a kernel
  • Building and testing the root file system
  • Configuring Kernel on Host & target
  • Compiling process, build, deploy and test
  • Experimenting with QEMU: team work
  • Build and testing the embedded Linux sub system
  • Building, updating, and testing the Kernels
  • Flashing and testing the image
  • Building of kernel
  • Build a bare metal file system
  • Customize with rootfs
  • Busybox and updates
  • Lib dependencies
  • Process and Threads
  • Multitasking, Multiprocessing, and Multithreading
  • Linux view on Multiprocessor based systems
  • Process Address Map
  • Hierarchy, types, and primary investigation
  • Process programming using OS specific calls
  • Multi Threaded programming using PTHREAD API
  • Resource limits management
  • The Process protection with ASLR
  • Configuring the heap/stack protections for a live process
  • Writing a kernel module to customize the system information without /proc mounts
  • The /proc sub system
  • System objects kernel
  • Process listing and monitoring
  • Scheduling
  • Real time SCHED_FIFO, SCHED_RR
  • Timesharing CFS
  • IDEAL and Batches
  • Affinity control
  • Soft and Hard
  • Configuring the CPU
  • System Resources
  • Hard and soft limits
  • API to handle process specific configuration
  • Handling Asynchronous notification using signals
  • Type of signals
  • Registering and controlling events
  • Disabling, Masking, and unmasking Signals
  • Examine the pending signals
  • User defined signals
  • Investigation signals for a running process
  • Inter process communication
  • Pipes and FIFO
  • Redirection
  • Serial buffer management
  • Messages queues using OS based API and POSIX
  • Type based buffer handling
  • messages with priority
  • Handling I/O mapped and Memory Mapped devices
  • Shared memory using OS based API and POSIX
  • Attaching/Detaching the process for process
  • Using shared page for POSIX
  • Semaphore and Mutex Examples
  • Sockets
  • Secure Code Practices in C
  • Array
  • Do not form or use out-of-bounds pointers or array subscripts
  • Ensure size arguments for variable length arrays are in a valid range
  • Do not subtract or compare two pointers that do not refer to the same array
  • Guarantee that library functions do not form invalid pointers
  • Characters and Strings
  • Guarantee that storage for strings has sufficient space for character data and the null terminator
  • Arguments to character-handling functions must be representable as an unsigned char
  • Memory Management
  • Do not access freed memory and Free dynamically allocated memory when no longer needed
  • Only free memory allocated dynamically and allocate sufficient memory for an object
  • Input/Output
  • Exclude user input from format strings
  • Gets()
  • TOCTOU race conditions while accessing files
  • Signals
  • Call only asynchronous-safe functions within signal handlers
  • Do not access shared objects in signal handlers
  • Do not call signal() from within interruptible signal handlers
  • Concurrency
  • Clean up thread-specific storage
  • Do not destroy a mutex while it is locked
  • Avoid race conditions when using library functions
  • Declare objects shared between threads with appropriate storage durations
  • Avoid deadlock by locking in a predefined order
  • Do not call signal() in a multithreaded program
  • Investigating and debugging user mode applications
  • Profiling and Code Coverage
  • Using gprof for profiling C programs
  • Using gcov for code coverage analysis
  • Memory profilers
  • Memory checking and Heap profiling using Valgrind
  • using electic fence for profiling
  • Using dmalloc and libduma for memory debugging
  • traces and hooks for heap with signals
  • tracing for ltrace, mtrace, strace
  • Debugging techniques
  • The gdb architecture
  • Cross debugging and interface
  • Host GDB binary and gdbserver
  • GDB must have commands
  • Running program session with GDB
  • Examining the Stack
  • Examining the source files and data
  • Analyzing core dumps
  • Debugging running processes
  • Time traveling and recording
  • Debugging applications on ARM Target
  • The gdb architecture
  • Cross debugging and interface
  • Host GDB binary and gdbserver
  • Attaching remote process on host
  • Connection setting and remote connection
  • Attaching the target pid for a debug session

Enroll Now

Course Content

Time: 3 days

Curriculum is empty



3 rating

5 stars
4 stars
3 stars
2 stars
1 star
  • Shibin L

    It was a great learning experience

    Sir thought us very well with awesome examples and explanations. We are satisfied for the overall concept which is covered
  • Lavanya C

    Very good instructor, very friendly and professional

    Thank you very much for providing such training and will really appreciate eAge Technologies effort and looking forward to get support and help when required from the team.
  • Umesh R

    Teaching is very very well.

    I can genuinely say that he was, hands down, the best instructor that I've been trained in my career.

Customized, Immersive, Hands-On Driven


  • Real time virtual classes
  • Pre course reading material
  • Suppliment resources
  • Language: English
  • Certificate of completion

Enroll Now

Your Dream Course Is Only A Step Away

Your Dream Course Is Only A Step Away

Your Dream Course Is Only A Step Away