The Linux Development Platform
The Linux Development Platform is your hands-on guide to building software on Linux. Whether you’re a curious beginner or an experienced coder, this book covers everything you need to know about developing on one of the world’s most popular open-source systems. From toolchains to debugging, it’s packed with practical advice and real-world examples. If you’re ready to level up your Linux skills or just want to see what the hype is about, this book has you covered.
Contents of the Book
Chapter 1: Introduction to Software Development
- 1.1 Life Cycle of a Software Development Project
- 1.1.1 Requirement Gathering
- 1.1.2 Writing Functional Specifications
- 1.1.3 Creating Architecture and Design Documents
- 1.1.4 Implementation and Coding
- 1.1.5 Testing
- 1.1.6 Software Releases
- 1.1.7 Documentation
- 1.1.8 Support and New Features
- 1.2 Components of a Development System
- 1.2.1 Hardware Platform
- 1.2.2 Operating System
- 1.2.3 Editors
- 1.2.4 Compilers and Assemblers
- 1.2.5 Debuggers
- 1.2.6 Version Control Systems
- 1.2.7 E-mail and Collaboration
- 1.2.8 X-Windows
- 1.3 Selection Criteria for Hardware Platform
- 1.4 Selection Criteria for Software Development Tools
- 1.5 Managing Development Process
- 1.5.1 Creating Deadlines
- 1.5.2 Managing the Development Team
- 1.5.3 Resolving Dependencies
- 1.6 Linux Development Platform Specifications (LDPS) and Linux Standard Base (LSB)
- 1.6.1 Libraries
- 1.6.2 Current Contributors to LSB
- 1.7 References
Chapter 2: Working With Editors
- 2.1 What to Look for in an Editor
- 2.1.1 Extensibility
- 2.1.2 Understanding Syntax
- 2.1.3 Tag Support
- 2.1.4 Folding Code
- 2.2 Emacs
- 2.2.1 Using Emacs
- 2.2.2 Basic Emacs Concepts
- 2.2.3 Using Buffers and Windows
- 2.2.4 Language Modes
- 2.2.5 Using Tags
- 2.2.6 Compiling
- 2.2.7 Xemacs
- 2.3 Jed
- 2.3.1 Configuring Jed
- 2.3.2 Using Jed
- 2.3.3 Folding Code
- 2.4 VIM
- 2.4.1 VIM Concepts
- 2.4.2 Basic Editing
- 2.4.3 Using Tags with VIM
- 2.4.4 Folding Code
- 2.5 References and Resources
Chapter 3: Compilers and Assemblers
- 3.1 Introduction to GNU C and C++ Compilers
- 3.1.1 Languages Supported by GCC
- 3.1.2 New Features in GCC 3.x
- 3.2 Installing GNU Compiler
- 3.2.1 Downloading
- 3.2.2 Building and Installing GCC
- 3.2.3 Environment Variables
- 3.2.4 Post-Installation Tasks
- 3.2.5 What Not to Do when Installing Development Tools
- 3.3 Compiling a Program
- 3.3.1 Simple Compilation
- 3.3.2 Default File Types
- 3.3.3 Compiling to Intermediate Levels
- 3.3.4 Compilation with Debug Support
- 3.3.5 Compilation with Optimization
- 3.3.6 Static and Dynamic Linking
- 3.3.7 Compiling Source Code for Other Languages
- 3.3.8 Summary of gcc Options
- 3.4 Linking a program
- 3.5 Assembling a Program
- 3.6 Handling Warning and Error messages
- 3.7 Include files
- 3.8 Creating Libraries
- 3.9 Standard Libraries
- 3.10 Compiling Pascal Programs
- 3.10.1 Using Free Pascal (fpc)
- 3.10.2 Using GNU Pascal
- 3.11 Compiling Fortran Programs
- 3.12 Other Compilers
- 3.12.1 Smalltalk
- 3.12.2 Oberon
- 3.12.3 Ruby
- 3.13 References and Resources
Chapter 4: Using GNU make
- 4.1 Introduction to GNU make
- 4.1.1 Basic Terminology
- 4.1.2 Input Files
- 4.1.3 Typical Contents of a Makefile
- 4.1.4 Running make
- 4.1.5 Shell to Execute Commands
- 4.1.6 Include Files
- 4.2 The make Rules
- 4.2.1 Anatomy of a Rule
- 4.2.2 A Basic Makefile
- 4.2.3 Another Example of Makefile
- 4.2.4 Explicit Rules
- 4.2.5 Implicit Rules
- 4.3 Using Variables
- 4.3.1 Defining Variables
- 4.3.2 Types of Variables
- 4.3.3 Pre-Defined Variables
- 4.3.4 Automatic Variables
- 4.4 Working with Multiple Makefiles and Directories
- 4.4.1 Makefile in The Top Directory
- 4.4.2 Makefile in common-dir Directory
- 4.4.3 Makefile in the ftp-dir Directory
- 4.4.4 Makefile in the tftp-dir Directory
- 4.4.5 Makefile in the dns-dir Directory
- 4.4.6 Building Everything
- 4.4.7 Cleaning Everything
- 4.4.8 Making Individual Targets
- 4.5 Special Features of make
- 4.5.1 Running Commands in Parallel
- 4.5.2 Non-Stop Execution
- 4.6 Control Structures and Directives
- 4.6.1 The ifeq Directive
- 4.6.2 The ifneq Directive
- 4.6.3 The ifdef Directive
- 4.6.4 The ifndef Directive
- 4.6.5 The for Control Structure
- 4.7 Getting the Latest Version and Installation
- 4.7.1 Compilation
- 4.7.2 Installation
- 4.8 References and Resources
Chapter 5: Working with GNU Debugger
- 5.1 Introduction to GDB
- 5.2 Getting Started with GDB
- 5.2.1 Most Commonly Used gdb Commands
- 5.2.2 A Sample Session with gdb
- 5.2.3 Passing Command Line Arguments to the Program Being Debugged
- 5.3 Controlling Execution
- 5.3.1 The step and finish Commands
- 5.4 Working with the Stack
- 5.5 Displaying Variables
- 5.5.1 Displaying Program Variables
- 5.5.2 Automatic Displaying Variables with Each Command
- 5.5.3 Displaying Environment Variables
- 5.5.4 Modifying Variables
- 5.6 Adding Break Points
- 5.6.1 Continuing from Break Point
- 5.6.2 Disabling Break Points
- 5.6.3 Enabling Break Points
- 5.6.4 Deleting Break Points
- 5.7 Debugging Optimized Code
- 5.8 Files and Shared Libraries
- 5.9 Using gdb With GNU Emacs
- 5.10 Debugging Running Processes
- 5.11 Installing GDB
- 5.11.1 Downloading and Building
- 5.11.2 Final Installation
- 5.12 Other Open Source Debuggers
- 5.12.1 The kdbg Debugger
- 5.12.2 The ddd Debugger
- 5.12.3 The xxgdb Debugger
- 5.13 References and Resources
Chapter 6: Introduction to CVS
- 6.1 CVS Policies
- 6.2 Project Management and Communication
- 6.3 Installing and Managing CVS
- 6.3.1 Configuring CVS
- 6.3.2 Importing a Project into the Repository
- 6.4 Using the CVS Client
- 6.4.1 Local Repositories
- 6.4.2 Remote Repositories
- 6.4.3 Checking out a Project
- 6.4.4 Finding the Status of a Project
- 6.4.5 Finding Differences
- 6.4.6 Resolving Conflicts
- 6.4.7 Checking the Project Back In
- 6.4.8 Adding Files to a Project
- 6.4.9 Removing Files from a Project
- 6.4.10 Renaming Files within a Project
- 6.4.11 Removing your Working Copy
- 6.4.12 Tags and Releases
- 6.5 Introduction to jCVS
- 6.5.1 System Requirements
- 6.5.2 Installation Instructions
- 6.5.3 Using jCVS
- 6.6 Using Emacs with CVS
- 6.6.1 Installing pcl-cvs
- 6.6.2 Using pcl-cvs
- 6.7 Secure remote access with CVS
- 6.7.1 Secure Shell Access
- 6.8 References and Resources
Chapter 7: Miscellaneous Tools
- 7.1 Using indent Utility
- 7.1.1 Getting Started with Indent
- 7.1.2 Selecting Coding Styles
- 7.1.3 Blank Lines and Comments
- 7.1.4 Formatting Braces
- 7.1.5 Formatting Declarations
- 7.1.6 Breaking Long Lines
- 7.1.7 Summary of Options
- 7.2 Using sed Utility
- 7.3 Using diff Utility
- 7.3.1 Other Forms of diff Utility
- 7.4 Using cscope and cbrowser
- 7.5 Generating C Function Prototypes from C Source Code Using cproto
- 7.6 Using ltrace and strace Utilities
- 7.7 Using GNU Binary Utilities
- 7.7.1 Using the ar Utility
- 7.7.2 Using the ranlib Utility
- 7.7.3 Using the nm Utility
- 7.7.4 Using the strip Utility
- 7.7.5 Using the objcopy Utility
- 7.7.6 Using the objdump Utility
- 7.7.7 Using the size Utility
- 7.7.8 Using the strings Utility
- 7.7.9 Using the addr2line Utility
- 7.8 Using the ldd Utility
- 7.9 References and Resources
Chapter 8: Cross-Platform and Embedded Systems Development
- 8.1 Introduction to the Cross-Platform Development Process
- 8.1.1 Host Machine
- 8.1.2 Target Machine
- 8.1.3 Native and Cross Compilers
- 8.1.4 Cross Platform Development Cycle
- 8.2 What are Embedded Systems?
- 8.2.1 Embedded Systems and Moving Parts
- 8.2.2 Embedded Systems and Power Consumption
- 8.2.3 Embedded Operating Systems
- 8.2.4 Software Applications for Embedded Systems
- 8.3 How Development Systems Differ for Embedded Systems
- 8.3.1 Knowledge of Target System Hardware
- 8.3.2 Is the Target System Real-Time?
- 8.3.3 Testing Methodology
- 8.4 Cross Compilations
- 8.4.1 Software Emulators
- 8.4.2 In-circuit emulators
- 8.4.3 Introduction to JTAG and BDM
- 8.5 Connecting to Target
- 8.5.1 Using gdbserver with GNU Debugger
- 8.5.2 Attaching to a Running Process Using gdbserver
- 8.5.3 Using Stubs with GNU Debugger
- 8.5.4 Debugging the Debug Session
- 8.6 Hardware Used for Cross Platform and Embedded Systems Development
- 8.6.1 Arcom SBC-GX1 Board
- 8.6.2 Artesyn PM/PPC Mezzanine Card
- 8.7 References
Chapter 9: Platform Independent Development with Java
- 9.1 How Java Applications Work
- 9.1.1 Java Compiler
- 9.1.2 Java Virtual Machine
- 9.2 Kaffe
- 9.3 The Jboss Java Development System
- 9.4 Java 2 SDK
- 9.4.1 Java 2 SDK Standard Edition
- 9.4.2 Getting and Installing Java SDK from Sun
- 9.4.3 Creating jar Files
- 9.5 Building Java Applications
- 9.5.1 Creating Source Code File
- 9.5.2 Compiling Java Code
- 9.5.3 Running Java Applications
- 9.5.4 Using gcj to Build Java Applications
- 9.6 Building Applets
- 9.7 Testing Applets with Netscape
- 9.8 Jikes for Java
- 9.9 Miscellaneous
- 9.9.1 Embedded Java
- 9.9.2 Real Time Java
- 9.9.3 Wireless Applications
- 9.10 References
Book Description
“The Linux Development Platform” isn’t just another dry manualthink of it as your personal mentor in the world of Linux software development. It takes you step by step through the essential tools and workflows that make building applications on Linux efficient (and honestly, a little fun). With clear explanations, practical examples, and a focus on real-world use, this book demystifies everything from compilers to version control. You’ll find yourself reaching for it whether you’re squashing bugs at midnight or just tinkering on a rainy Sunday.
Book Overview
This book dives deep into the nuts and bolts of developing software on the Linux platform. You’ll get familiar with the tools every developer should knowthink GCC, GDB, makefiles, and more. The authors don’t just throw commands at you; they explain why things work the way they do. It’s like having a wise friend who’s been around the block a few times in open-source communities. The focus is always on practical use, so you won’t get lost in theory or endless tangents.
Why Read This Book
If you’ve ever felt lost trying to set up a build environment or wondered how pros debug tricky issues, this book is for you. It doesn’t matter if you’re switching from another OS or just want to sharpen your skillsthe advice here is gold. I love how it manages to be both thorough and approachable; it cuts through jargon and makes even complex topics feel manageable. Plus, let’s face it: mastering Linux development can seriously boost your tech cred.
Who This Book Is For
This book is perfect for anyone who wants to get serious about developing on Linux. Are you a student? A hobbyist? Maybe a seasoned developer looking to expand your toolkit? You’ll find something valuable here. Even if you’ve dabbled in Linux before but never felt fully comfortable, “The Linux Development Platform” bridges that gap. Honestly, anyone who loves learning by doing will appreciate its hands-on approach.
What You Will Learn
- The essentials of setting up your development environment on Linuxno more guessing which tool does what
- How to compile code using GCC and manage projects with makefiles (it’s easier than it sounds!)
- Debugging techniques with GDB that actually save you time and frustration
- Version control basics with CVS and other toolsso your code stays safe and organized
- Tips for using editors like Vim and Emacs without pulling your hair out
- Best practices for building portable software across different distributions
- Troubleshooting common problems (because hey, we all hit roadblocks)
- Insights into open-source project workflows and community collaboration
- The confidence to explore advanced topics when you’re readywithout feeling overwhelmed
Leave a Reply