---
name: "halcompile"
section: "1"
platform: "linux"
package: "linuxcnc-uspace-dev"
version: "1:2.9.4-2+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/halcompile"
---

# halcompile(1)

Build, compile and install LinuxCNC HAL components

## NAME

halcompile - Build, compile and install LinuxCNC HAL components

## SYNOPSIS

**halcompile** \[**--compile**\|**--preprocess**\|**--document**\|**--view-doc**\] compfile...

*sudo* **halcompile** \[**--install**\|**--install-doc**\] compfile...

**halcompile** **--compile** **--userspace** cfile...

*sudo* **halcompile** **--install** **--userspace** cfile...

*sudo* **halcompile** **--install** **--userspace** pyfile...

When personalities are used in a comp file, HAL instances are exported sequentially (typically by the mutually exclusive count= or names= parameters). If the number of exports exceeds the maximum number of personalities, subsequent personalities are assigned modulo the maximum number of personalities allowed.

By default, the maximum number of personalities is 64.  To alter this limit, use the **--personalities=** option with halcompile.  For example, to set the maximum of  personality items to 4:\
    \[sudo\] **halcompile --personalities=4** --install ...

## DESCRIPTION

**halcompile** performs many different functions:

- •

  Compile **.comp** and **.c** files into **.so** or **.ko** HAL realtime components (the **--compile** flag)

- •

  Compile **.comp** and **.c** files into HAL non-realtime components (the **--compile --userspace** flag)

- •

  Preprocess **.comp** files into **.c** files (the **--preprocess** flag)

- •

  Extract documentation from **.comp** files into **.9** manpage files (the **--document** flag)

- •

  Display documentation from **.comp** files onscreen (the **--view-doc** flag)

- •

  Compile and install **.comp** and **.c** files into the proper directory for HAL realtime components (the **--install** flag), which may require *sudo* to write to system directories.

- •

  Install **.c** and **.py** files into the proper directory for HAL non-realtime components (the **--install --userspace** flag), which may require *sudo* to write to system directories.

- •

  Extract documentation from **.comp** files into **.9** manpage files in the proper system directory (the **--install** flag), which may require *sudo* to write to system directories.

- •

  Preprocess **.comp** files into **.c** files (the **--preprocess** flag)

## SEE ALSO

*Halcompile HAL Component Generator* in the LinuxCNC documentation for a full description of the **.comp** syntax, along with examples

**pydoc, HAL** and *Creating Non-realtime Python Components* in the LinuxCNC documentation for documentation on the Python interface to HAL components
