---
name: "theme-d-link"
section: "1"
platform: "linux"
package: "theme-d-translator"
version: "6.1.0-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/theme-d-link"
---

# theme-d-link(1)

the Theme-D linker

## NAME

theme-d-link - the Theme-D linker

## SYNOPSIS

**theme-d-link** \[ *OPTION* \] ... *FILE*

## DESCRIPTION

Link the Theme-D pseudocode file *FILE* and Theme-D libraries it uses into Guile bytecode. The default bytecode filename is obtained by appending *.go* to the basename of *FILE*. Command **theme-d-link** creates an intermediate file either in Guile Tree-IL or Scheme and uses Guile to compile it into bytecode. The default suffix of the intermediate file is either *.tree-il* or *.scm*.

By default, the output file and the intermediate file are placed into the directory where the command **theme-d-link** is invoked.

## OPTIONS

- **-o**, **--output**=*OUTPUTFILE*

  Specify the compilation output file.

- **-m**, **--module-path**=*PATH*

  Specify the search path for Theme-D modules. The path should be a list of directories separated with :'s. You can prefix the list with a colon in order to include the default Theme-D library path in the search path.

- **-l**, **--message-level**=*LEVEL*

  Specify the message level of the compiler. The level has to be an integer number from 0 to 3. Value 0 means no output and value 3 the most verbose output.

- **-n**, **--intermediate-file**=*INTFILE*

  Specify the intermediate filename.

- **-i**, **--intermediate-language**=*LANGUAGE*

  Specify the intermediate language. Value *LANGUAGE* has to be either *tree-il*, *tree-il-3.0*, *tree-il-2.2*, *scheme*, or *scheme-no-opt*. When value *tree-il* is used the Tree-IL version for which Theme-D has been configured is used.

- **-x** *MODULE*

  Link (load) module *MODULE* into the target program. The syntax of *MODULE* is *(sym1*...*symn)* in double quotes.

- **--no-final-compilation**

  Do not compile the intermediate file with **guild** **compile**.

- **--no-strip**

  Do not strip away unused code.

- **--no-factorization**

  Do not factorize the type expressions out of procedure implementations.

- **--no-weak-assertions**

  Do not check ordinary assertions. Strong assertions are always checked.

- **--backtrace**

  Print backtrace on compilation error.

- **--pretty-print**

  Pretty print the pseudocode output.

- **--no-verbose-errors**

  Less information in the error messages.

- **--keep-intermediate**

  Keep the intermediate Tree-IL or Scheme file. By default the intermediate file is deleted.

- **--link-to-cache**

  Link the target bytecode file into the guile cache.

- **--runtime-pretty-backtrace**

  Generate code to support runtime pretty printed backtraces.

- **--no-unlinked-procedure-names**

  Do not generate code for reporting unlinked procedure names.

- **--module-debug-output**

  Print debug messages when a module body linkage is started and ended.

- **--check-all-primitives**

  Check that primitive procedure result values match the result types for all primitives, including those defined with **unchecked-prim-proc**.

- **--duplicates**=*symbols*

  Set the values passed to **default-duplicate-binding-handler** in the target program. If there are several symbols enclose them in quotes.

- **--split**

  Split the linker output.

- **--split-dir**=*dir*

  Set the directory where to put the split linker output.

- **--split-basename=*name***

  Split the basename for split linker output files.

- **--guile-opt-level=*level***

  Set the optimization level for final guile compilation. The default is 1.

- **--extra-guild-options=*options***

  Set extra guild options for the final compilation. If there are several options enclose the in quotes.

- **--version**

  Show the Theme-D version number and exit.

## TARGET PLATFORMS

The following intermediate languages are available:

- *tree-il*

  Guile Tree-IL. Use the Guile version from Theme-D configuration.

- *tree-il-3.0*

  Guile 3.0 Tree-IL.

- *tree-il-2.2*

  Guile 2.2 Tree-IL.

- *scheme*

  Guile Scheme.

- *scheme-no-opt*

  Guile Scheme without optimizations.

## ENVIRONMENT

- **THEME\_D\_CONFIG\_FILE**

  If this variable is defined its value is used as the Theme-D configuration file instead of the default configuration file.

## FILES

- */etc/theme-d-config*

  The Theme-D configuration file.

- *~/.theme-d-config*

  The Theme-D configuration file. This file should be normally present only if you use Theme-D in local mode.

## SEE ALSO

[**theme-d-compile**(1)](/theme-d-compile/1.md), [**run-theme-d-program**(1)](/run-theme-d-program/1.md), [**setup-theme-d-test-env**(1)](/setup-theme-d-test-env/1.md), */usr/share/doc/theme-d-doc/theme-d-user-guide.pdf.gz*
