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 makes use of LWM2M for communication, GEISA
Applications are unaware of this and do not require any LWM2M client libraries
or knowledge.