## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# `*-lynxos178-*`

Tier: 3

Targets for the LynxOS-178 operating system.

LynxOS-178 is a commercial RTOS designed for safety-critical real-time systems. It is developed by Lynx Software Technologies as part of the MOSA.ic product suite.

Target triples available:

- `x86_64-lynx-lynxos178`

## Target maintainers

@rfatykhov-lynx

## Requirements

To build Rust programs for LynxOS-178, you must first have LYNX MOSA.ic installed on the build machine.

This target supports only cross-compilation, from the same hosts supported by the Lynx CDK.

Currently only `no_std` programs are supported. Work to support `std` is in progress.

## Building the target

You can build Rust with support for x86_64-lynx-lynxos178 by adding that to the `target` list in `config.toml`, and then running `./x build --target x86_64-lynx-lynxos178 compiler`.

## Building Rust programs

Rust does not yet ship pre-compiled artifacts for this target. To compile for this target, you will need to build Rust with the target enabled (see "Building the target" above).

Before executing `cargo`, you must configure the environment to build LynxOS-178 binaries by running `source setup.sh` from the los178 directory.

If your program/crates contain procedural macros, Rust must be able to build binaries for the host as well. The host gcc is hidden by sourcing setup.sh. To deal with this, add the following to your project's `.cargo/config.toml`:

    [target.x86_64-unknown-linux-gnu]
    linker = "lynx-host-gcc"

(If necessary substitute your host target triple for x86_64-unknown-linux-gnu.)

To point `cargo` at the correct rustc binary, set the RUSTC environment variable.

The core library should be usable. You can try by building it as part of your project:

    cargo +nightly build -Z build-std=core --target x86_64-lynx-lynxos178

## Testing

Binaries built with rust can be provided to a LynxOS-178 instance on its file system, where they can be executed. Rust binaries tend to be large, so it may be necessary to strip them first.

It is possible to run the Rust testsuite by providing a test runner that takes the test binary and executes it under LynxOS-178. Most (all?) tests won't run without std support though, which is not yet supported.

## Cross-compilation toolchains and C code

LYNX MOSA.ic comes with all the tools required to cross-compile C code for LynxOS-178.