# Packages
# README
The C Library of the Abelian Go SDK
A dynamic library that wraps the Abelian Go SDK for use in programming languages other than Go.
It contains a set of functions that can be used to interact with the Abelian Blockchain. The library can be used in any programming language (other than Go) that supports C bindings. For Go, it is recommended to use the Abelian Go SDK directly.
1. Install dependencies
1.1. Install Go
Go version 1.11 or higher is required. Please refer to the official Go installation guide for details.
1.2. Install build tools
For Linux:
sudo apt install astyle cmake gcc ninja-build pkg-config libssl-dev python3-pytest python3-pytest-xdist unzip xsltproc doxygen graphviz python3-yaml
For macOS:
brew install cmake ninja [email protected] wget doxygen graphviz astyle pkg-config && pip3 install pytest pytest-xdist pyyaml
2. Build the library
To build the library, clone the repository and run make
in the root directory of the repository.
To clear the build files, run make clean
.
If the build is successful, the dynamic library file will be created in the build
directory.
On Linux, the filename will be libabelsdk.so
and on macOS, the filename will be libabelsdk.dylib
.
The C header file libabelsdk.h
will also be created in the build
directory. This file contains the function definitions of the library.
3. Use the library
The library can be used in any programming language that supports C bindings.
Note that when building the SDK library, the OpenSSL library is linked statically on macOS and dynamically on Linux. Therefore, to run an application using the SDK library on another machine, it is required to have the OpenSSL library installed on Linux while it is not required on macOS.
As the library uses Protocol Buffers as the serialization format, you will need to generate the corresponding code for your language using the protocol buffer compiler.
The definition files (*.proto
) are located in the resources/protobuf
directory.
You may refer to the Abelian Java SDK as a concrete example of using the library in real applications.