BuildingDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/axelarnetwork/axelar-core/llms.txt
Use this file to discover all available pages before exploring further.
axelard from source gives you full control over the binary you run. The Axelar Core repository supports three build paths: a statically linked binary (recommended for production), a dynamically linked binary for local development, and Docker images for containerized deployments. Before building, you must also supply gateway smart contract bytecode from the axelar-cgp-solidity releases.
Prerequisites
Go 1.25+
Required for all build paths. The
go.mod declares go 1.25. Download from go.dev.Docker
Required for the static build. The
make build-static target extracts the binary from an Alpine-based image.gcc / glibc
Required for the dynamic
make build path. The resulting binary is tied to your system’s glibc version.make
GNU Make drives all build targets. Ensure
make is on your PATH along with standard build tools.For a release build, check out the release tag first:
Smart Contract Bytecode Dependency
Axelar Core embeds bytecode from the Axelar gateway smart contracts at compile time. You must supply this before runningmake generate or any build target that triggers code generation.
Find the required contract version
Inspect
contract-version.json at the root of the repository to learn which release you need:Download from axelar-cgp-solidity releases
Go to the axelar-cgp-solidity releases page and download the matching
Bytecode-vX.Y.Z archive. For example:Static Build (Recommended)
The static build produces a fully self-contained Linux binary with no runtime dependencies on glibc. It uses an Alpine Linux Docker image that links against musl libc and the static CosmWasm VM library (libwasmvm_muslc.a). The resulting binary runs on any Linux distribution.
- Builds the
axelar/coreDocker image (Alpine-based, with musl libc). - Creates a temporary container named
axelar-extract. - Copies
/usr/local/bin/axelardout of the container into./bin/axelard. - Removes the temporary container.
Dynamic Build
The dynamic build links against your host system’s glibc. It is faster than the static build because it skips the Docker step, but the binary may not run on systems with a different glibc version../bin/axelard. This target sets CGO_ENABLED=1 and uses the ledger build tag by default.
Build Tags
The Makefile controls build tags through theBUILD_TAGS variable:
| Tag | Purpose |
|---|---|
ledger | Enables Ledger hardware wallet support via HID. Always included. |
muslc | Enables static linking against musl libc. Automatically set when MUSLC=true. |
MUSLC=true (set automatically during the static build), the linker flags include:
Docker Images
Release Image
axelar/core:latest — the same Alpine-based image used by make build-static. Build arguments:
Debug Image
axelar/core-debug:latest using Dockerfile.debug. This image bundles delve so a remote debugger can be attached to a running node.
Multi-arch Builds
docker buildx to cross-compile and optionally push images. Set PUSH_DOCKER_IMAGE=false to build without pushing.
Downloading and Verifying a Release Binary
If you prefer to download a pre-built binary from the Axelar Core releases page rather than building from source, verify its GPG signature before use.Download the binary and signature
From the releases page, download both
axelard-<os>-<arch>-vX.Y.Z and its companion .asc file.Developer Tooling
Install code generation prerequisites required bymake generate:
goimports, stringer, moq, statik, golangci-lint, and mdformat. Ensure $(go env GOPATH)/bin is on your PATH.