LinuxCommandLibrary

dlb

Debug Linux kernel using Dynamic Loadable Backtracer

SYNOPSIS

dlb [OPTION…] [PROJECT [TARGET…]]

PARAMETERS

-C DIR, --directory=DIR
    Change to directory DIR before reading project file.

-f FILE, --file=FILE
    Read project from FILE instead of "project.dlb".

-j[N], --jobs[=N]
    Allow at most N parallel jobs at once; N=0 means unlimited.
Default: 1.

--dry-run
    Do everything except actually execute commands.

--trace
    Print commands as they are executed.

--keep-going
    Continue building as much as possible after errors.

--print-dot[=FILE]
    Print dependency graph in GraphViz DOT format to FILE or stdout.

--help
    Display help message and exit.

--version
    Display version information and exit.

DESCRIPTION

Dlb is a generic, portable build system for software projects, emphasizing speed, correctness, and minimal dependencies. It uses plain-text project files to declaratively specify targets, their dependencies, and build commands. Unlike Make, dlb performs precise dependency tracking without full rescans on each build, enabling efficient incremental and parallel builds. Written in standard C99, it runs on any POSIX-compliant system with no external libraries required. Dlb supports multiple build environments via environment variables and generators, making it suitable for cross-compilation and complex projects. Its design avoids common pitfalls like incorrect parallel execution or stale dependencies, providing reliable results even in large codebases.

Key advantages include logarithmic-time dependency resolution, built-in support for phony targets, and extensible via shell commands. Dlb is lightweight (single binary under 1MB) and integrates well with version control systems.

CAVEATS

Dlb requires a project.dlb file; does not read Makefiles. Parallel builds may require careful command ordering to avoid races.

PROJECT FILE SYNTAX

Uses indented blocks like:
default all install
command cc -c $< -o $> $<.c
Defines inputs ($<), outputs ($>), and phony targets.

GENERATORS

Environment variable DLB_GENERATORS enables Makefile/Ninja output for integration.

HISTORY

Developed by Dr. Sebastian Weber since 2016 to overcome limitations in tools like Make. First public release in 2018; actively maintained with focus on performance optimizations.

SEE ALSO

make(1), ninja(1), cmake(1)

Copied to clipboard