Embedded C/C++ SBOM

C/C++ SBOM Generator for Embedded Software

C/C++ SBOM Generator for Embedded Software

lynkctl, Interlynk's commercial generator, understands your build and emits CycloneDX or SPDX SBOMs with per-component evidence, deterministic output, and a fully air-gapped runtime. Built for teams shipping under FDA, EU CRA, and ISO/SAE 21434.

lynkctl, Interlynk's commercial generator, understands your build and emits CycloneDX or SPDX SBOMs with per-component evidence, deterministic output, and a fully air-gapped runtime. Built for teams shipping under FDA, EU CRA, and ISO/SAE 21434.

On-premises • Air-gapped by default • CycloneDX + SPDX • Deterministic output

On-premises • Air-gapped by default • CycloneDX + SPDX • Deterministic output

Diagram: IAR, Keil, TI, Make, and CMake project files flow into lynkctl, which outputs a CycloneDX 1.6+ or SPDX 3.0+ SBOM with evidence. No binary upload, no network call.

Trusted by security and compliance teams at 100+ regulated companies in

MedTech
SaMD
AI SaMD
FinTech
OT
Energy
eSports
Consumer SaaS
MedTech

Trusted by 100+ security and compliance teams in

MedTech
SaMD
AI SaMD
FinTech
OT
Energy
eSports
Consumer SaaS
MedTech

Trusted by 100+ in

SiMD
SaMD
AISaMD
FinTech
OT
Energy
eSports
Consumer SaaS
SiMD

THE PROBLEM

THE PROBLEM

THE PROBLEM

Embedded C/C++ breaks every SBOM tool built for the package-manager world.

Embedded C/C++ breaks every SBOM tool built for the package-manager world.

C/C++ projects have no standard dependency manifest, no package.json, no Cargo.toml, no go.mod. Components are vendored into the source tree, pulled through git submodules, or fetched by ad-hoc scripts, and no two projects look alike. (Why this makes SBOM generation so hard →)

Existing SBOM tools fail in one of three ways. Build-time tools hook into your compile, doubling CI time and demanding the exact release toolchain. Build-system-locked tools bind to one build system and break the moment your project doesn't fit it. Whole-tree scanners give up and return every file under src/, noise to an auditor, risk to a release engineer.

C/C++ projects have no standard dependency manifest, no package.json, no Cargo.toml, no go.mod. Components are vendored into the source tree, pulled through git submodules, or fetched by ad-hoc scripts, and no two projects look alike. (Why this makes SBOM generation so hard →)

Existing SBOM tools fail in one of three ways. Build-time tools hook into your compile, doubling CI time and demanding the exact release toolchain. Build-system-locked tools bind to one build system and break the moment your project doesn't fit it. Whole-tree scanners give up and return every file under src/, noise to an auditor, risk to a release engineer.

lynkctl, Interlynk's SBOM generator, is none of the above. It's a post-build generator: it runs after your existing build, so there's no rebuild and no doubled CI time. It stays independent of your build system, so changing or mixing CMake, Conan, or anything else doesn't break it. And, unlike a whole-tree guess, lynkctl produces a structured SBOM with per-component evidence an auditor can actually trust. (Generating an SBOM from a CMake build →)

Built for IoT, automotive, and medical-device teams shipping under audit.

lynkctl, Interlynk's SBOM generator, is none of the above. It's a post-build generator: it runs after your existing build, so there's no rebuild and no doubled CI time. It stays independent of your build system, so changing or mixing CMake, Conan, or anything else doesn't break it. And, unlike a whole-tree guess, lynkctl produces a structured SBOM with per-component evidence an auditor can actually trust. (Generating an SBOM from a CMake build →)

Built for IoT, automotive, and medical-device teams shipping under audit.

SEE IT RUN

SEE IT RUN

SEE IT RUN

lynkctl on a real IAR firmware build

lynkctl on a real IAR firmware build

An STM32L073 project with vendored FreeRTOS, lwIP, FatFs, mbedTLS and libmodbus. No manifest, no rebuild, no network calls.

HOW IT WORKS

HOW IT WORKS

HOW IT WORKS

Four things lynkctl does that generic SCA tools don't.

Four things lynkctl does that generic SCA tools don't.

Four things lynkctl does that generic SCA tools don't.

Toolchain-native, top to bottom

lynkctl names what it reads: GNU Make, CMake, and IAR Embedded Workbench at the build-system layer, and underneath, the actual gcc, clang, ld, iccarm, and ilink invocations they emit. Not a generic source scanner.

Evidence and confidence on every component

Evidence and confidence on every component

Every component lynkctl emits carries an evidence record: the source file, the compile line, the include path, and a confidence tier. When we're unsure, we tell you, in the SBOM and in the diagnostics.

Every component lynkctl emits carries an evidence record: the source file, the compile line, the include path, and a confidence tier. When we're unsure, we tell you, in the SBOM and in the diagnostics.

Deterministic and reviewable

Deterministic and reviewable

The same source tree produces a byte-identical SBOM. No embedded timestamps, no randomized component order. Your release pipeline can diff two SBOMs and trust what changed.

The same source tree produces a byte-identical SBOM. No embedded timestamps, no randomized component order. Your release pipeline can diff two SBOMs and trust what changed.

Embedded open-source software index, air-gapped runtime

Embedded open-source software index, air-gapped runtime

Vendored code is fingerprinted against our purpose-built open-source software index for embedded C/C++, FreeRTOS, lwIP, Mbed TLS, FatFs, and the long tail, curated by Interlynk and refreshed weekly. The index ships with lynkctl and runs fully offline. No network calls; same behavior in a dev laptop or a SCIF.

Vendored code is fingerprinted against our purpose-built open-source software index for embedded C/C++, FreeRTOS, lwIP, Mbed TLS, FatFs, and the long tail, curated by Interlynk and refreshed weekly. The index ships with lynkctl and runs fully offline. No network calls; same behavior in a dev laptop or a SCIF.

TOOLCHAIN COVERAGE

TOOLCHAIN COVERAGE

TOOLCHAIN COVERAGE

Does it work with your toolchain?

Does it work with your toolchain?

Two layers of support: the build system your team ships with, and the compilers and linkers it actually invokes. Here's what's shipping today, and what's coming next. Building Windows drivers? See Windows driver SBOM requirements.

Two layers of support: the build system your team ships with, and the compilers and linkers it actually invokes. Here's what's shipping today, and what's coming next. Building Windows drivers? See Windows driver SBOM requirements.

Build systems

Build systems

GNU Make

Makefile-driven C/C++ projects.

CMake

Generates Make, Ninja, or IDE projects from CMakeLists.txt.

IAR Embedded Workbench

Proprietary embedded IDE and toolchain; .ewp project files.

TI Code Composer Studio

Code Composer Studio for TI MCUs.

Keil µVision

ARM Cortex-M development environment.

MSBuild / WDK

IN THE WORKS

Windows driver projects built with Visual Studio and the WDK.

Eclipse

IN THE WORKS

Eclipse CDT-based embedded IDEs.

TASKING

IN THE WORKS

Automotive toolchain for AURIX and RH850.

Compilers & linkers

Compilers & linkers

gcc

Compiler · GNU

clang

Compiler · LLVM frontend

LLVM

Compiler infra · underlies Clang

ld

Linker · GNU

iccarm

Compiler · IAR for ARM

ilink / ilinkarm

Linker · IAR

Source control

Source control

Git

Component origin from .git repositories.

Git submodules

Submodule pointers resolved to upstream sources with commit pinning.

SVN

IN THE WORKS

Subversion repositories.

Microcontroller families

Microcontroller families

STM32

STMicroelectronics STM32 microcontrollers.

Infineon

Infineon PSOC and XMC microcontrollers.

NXP

NXP microcontroller families.

Nordic

IN THE WORKS

Wireless SoCs and microcontrollers.

Renesas

IN THE WORKS

Renesas microcontroller families.

Silicon Labs

IN THE WORKS

Silicon Labs wireless SoCs and microcontrollers.

Infineon AURIX

IN THE WORKS

Automotive safety MCUs.

Package managers

Package managers

vcpkg

IN THE WORKS

C/C++ package management.

Conan

IN THE WORKS

C and C++ package management.

REGULATED INDUSTRIES

REGULATED INDUSTRIES

REGULATED INDUSTRIES

Built for products that ship under audit.

Built for products that ship under audit.

FDA · 524B

Medical devices

FDA premarket submissions now require an SBOM under section 524B. lynkctl produces CycloneDX output with the evidence trail an auditor expects, and runs entirely on-premises so device firmware never leaves your build environment.

EU · CRA

Industrial & consumer

The EU Cyber Resilience Act requires manufacturers to maintain an SBOM across the supported lifecycle of every product. lynkctl's deterministic output and confidence scoring make CRA Annex I evidence reviewable, not just present.

ISO/SAE 21434 · UN R155

Automotive

Tier-1 and OEM suppliers face SBOM requirements down to the ECU. lynkctl’s IAR and CMake providers cover the toolchains most automotive embedded teams already use, without rewriting the build. TASKING support for AURIX and RH850 is in the works.

COMPARISON

COMPARISON

COMPARISON

Common approaches to embedded SBOMs.

Common approaches to embedded SBOMs.

Source SCA tools fall into one of the three failure modes described above. Binary analysis is a different lane entirely, useful for opaque firmware, no help when you control the source. lynkctl is the fourth path: post-build, build-system-aware, no rebuild required. (How to judge firmware SBOM accuracy across these approaches →)

BINARY ANALYSISGENERIC SOURCE SCALYNKCTL
Needs sourceNoYesYes
Adds a build pass to your CINoOftenNo
Knows embedded toolchains as first-class inputsNoNoYes
Handles vendored codePartialPartialYes (embedded open-source software index)
Per-component evidence trailRarelyRarelyYes
Air-gapped by defaultSometimesRarelyYes
Best forUnknown firmwareServer-side codebasesEmbedded products you build

BOMTIQUE

BOMTIQUE

BOMTIQUE

FDA · 524B

Want to do it yourself? We have an open-source option too.

Not every codebase fits a build-time introspector. Maybe your build system is exotic. Maybe most of your components are vendored, patched, or hand-stitched from upstream sources. Maybe you just want full editorial control over what ends up in the SBOM, without a commercial license in the loop.

bomtique is our open-source toolkit for hand-authored SBOMs. You write a small, reviewable manifest of your components; bomtique emits a deterministic CycloneDX or SPDX SBOM from it. Same reviewable evidence mindset as lynkctl, same air-gapped runtime, completely under your control. Apache 2.0, on GitHub.

$ bomtique manifest add \
--name FreeRTOS-Kernel --version 10.6.1 \
--license MIT \
--vendored-at third_party/FreeRTOS-Kernel
# wrote .components.json
$ bomtique scan --format cyclonedx --out ./sbom
# wrote sbom/firmware-1.0.0.cdx.json

THE STACK

THE STACK

THE STACK

Generation is one piece. The rest of the lifecycle lives in Interlynk too.

Generation is one piece. The rest of the lifecycle lives in Interlynk too.

lynkctl plugs into the rest of our stack: open-source tools for SBOM quality, assembly, and hand-curation, and the Interlynk platform for SBOM and VEX management across the product lifecycle. CycloneDX-native across the board.

lynkctl plugs into the rest of our stack: open-source tools for SBOM quality, assembly, and hand-curation, and the Interlynk platform for SBOM and VEX management across the product lifecycle. CycloneDX-native across the board.

lynkctl

COMMERCIAL

SBOM generator for embedded C/C++ toolchains. This page.

bomtique

OSS

Hand-authored SBOMs for projects where introspection won't fit.

sbomqs

OSS

SBOM quality scoring: verify what you produce.

sbomasm

OSS

Assemble multi-component SBOMs across products.

FAQ

FAQ

FAQ

C/C++ SBOM FAQ

C/C++ SBOM FAQ

Why is generating an SBOM for C/C++ so hard?

C and C++ have no standard dependency manifest like package.json or go.mod. Components are vendored into the source tree, pulled through git submodules, or fetched by ad-hoc scripts, so no two projects look alike and generic tools miss most of the tree.

Does lynkctl need to change my build system?

Which toolchains does it work with?

Can it run in an air-gapped environment?

How is this different from binary analysis or generic SCA?

Trusted by security and compliance teams at 100+ regulated companies

Audit-ready SBOM. With every build.

Interlynk automates SBOMs, manages open source risks, monitors suppliers, and prepares you for the post-quantum era, all in one trusted platform.

Trusted by security and compliance teams at 100+ regulated companies

Audit-ready SBOM. With every build.

Interlynk automates SBOMs, manages open source risks, monitors suppliers, and prepares you for the post-quantum era, all in one trusted platform.

Trusted by security and compliance teams at 100+ regulated companies

Audit-ready SBOM. With every build.

Interlynk automates SBOMs, manages open source risks, monitors suppliers, and prepares you for the post-quantum era, all in one trusted platform.