13.3. Linux Base LibrariesΒΆ

To facilitate clean and regular updates and to minimize container sizes, GEISA applications are encouraged to take advantage of the libraries provided in the base GEISA environment whenever possible.

This does not prevent GEISA applications from including their own libraries in the event that the GEISA environment does not provide a needed library.

There are two major groups of libraries:

  • C Language Runtime Libraries (e.g. gcc, uclibc, musl)

  • Other C Libraries

The following list is the current MINIMUM expectation for libraries provided in the base GEISA environment. This list is expected to grow over time as the base environment and specification evolves and as applications surface additional common needs.

C Language and Toolchain-provided Runtime Libraries (may vary by implementation):

  • libc - Core runtime support

  • libgcc - GNU C Compiler Collection (low-level runtime support)

  • libstdc++

  • libcrypt - Password hashing (MD5, SHA-256)

  • libdl - Dynamic loading

  • libm - Math library

  • libnsl - Network Services Library

  • libpthread - POSIX Threads

  • libresolv - DNS resolution and name services

  • librt - Real-time

  • libcap - POSIX capabilities

Other C Libraries (MUST):

  • libasyncns - Asynchronous Name Service

  • libatomic - Atomic operations

  • libcrypto - OpenSSL (hashing, encryption, digital signatures, random numbers, certs/keys)

  • libutil - Users, group,s pseudo-ttys (pty), etc.

  • libz - compression

  • libmosquitto - MQTT client implementation

  • libprotobuf - C++ protobuf implementation

Note

Many MQTT client libraries exist and applications MAY use libmosquitto listed above or choose a different implementation as needed.

Similarly, applications MAY use libprotobuf if their application is C++, otherwise the application must bring their own implementation of protobufs such as but not limited to one listed in Third-Party Add-ons for Protocol Buffers.

The GEISA API is defined at the protocol level and does not mandate a specific application SDK, programming language, or application implementation.

While GEISA ADM GEISA Application & Device Management makes use of LWM2M for communication, GEISA Applications are unaware of this and do not require any LWM2M client libraries or knowledge.