Installing Solang
The Solang compiler is a single binary. It can be installed in different ways, listed below.
Download from Homebrew (MacOS only)
Option 1: Download from Brew
Solang is available on Brew via a private tap. This works only for MacOS systems, both Intel and Apple Silicon. To install Solang via Brew, run the following command:
brew install hyperledger/solang/solang
Option 2: Download binaries
There are binaries available on github releases:
Download the file and save it somewhere in your $PATH
, for example the bin directory in your home directory. If the
path you use is not already in $PATH
, then you need to add it yourself.
On MacOS, remember to give execution permission to the file and remove it from quarantine by executing the following commands:
chmod +x solang-mac-arm
xattr -d com.apple.quarantine solang-mac-arm
If you are using an Intel based Mac, please, exchange solang-mac-arm
by solang-mac-intel
in both of the above commands.
On Linux, permission to execute the binary is also necessary, so, please, run chmod +x solang-linux-x86-64
. If you
are using an Arm based Linux, the command is the following: chmod +x solang-linux-arm64
.
Option 3: Use ghcr.io/hyperledger/solang containers
New images are automatically made available on solang containers. There is a release v0.3.2 tag and a latest tag:
docker pull ghcr.io/hyperledger/solang:latest
The Solang binary is stored at /usr/bin/solang
in this image. The latest tag
gets updated each time there is a commit to the main branch of the Solang git repository.
Option 4: Build Solang using Dockerfile
First clone the git repo using:
git clone https://github.com/hyperledger/solang
Then you can build the image using:
docker image build .
Option 5: Build Solang from source
In order to build Solang from source, you will need:
Rust version 1.70.0 or higher
A C++ compiler with support for C++17
A build of LLVM based on the Solana LLVM tree. There are a few LLVM patches required that are not upstream yet.
First, follow the steps below for installing LLVM and then proceed from there.
If you do not have the correct version of rust installed, go to rustup.
Compatible C++17 compilers are recent releases of gcc
, clang
and Visual Studio 2019 or later.
To install Solang from sources, do the following:
Install LLVM from Solana’s LLVM fork.
Build Solang from its source files.
Solang is also available on crates.io, so after completing step #1 from above, it is possible to build it using the release on crates.
Step 1: Install the LLVM Libraries
Solang needs a build of LLVM with some extra patches. These patches make it possible to generate code for Solana, and fixes concurrency issues in the lld linker.
You can either download the pre-built libraries from
github
or build your own from source. After that, you need to add the bin
of your
LLVM directory to your path, so that the build system of Solang can find the correct version of LLVM to use.
Linux
A pre-built version of LLVM, specifically configured for Solang, is available at https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-linux-x86-64.tar.xz for x86 processors and at https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-linux-arm64.tar.xz for ARM. After downloading, untar the file in a terminal and add it to your path.
tar Jxf llvm15.0-linux-x86-64.tar.xz
export PATH=$(pwd)/llvm15.0/bin:$PATH
Windows
A pre-built version of LLVM, specifically configured for Solang, is available at https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-win.zip.
After unzipping the file, add the bin directory to your path.
set PATH=%PATH%;C:\llvm15.0\bin
Mac
A pre-built version of LLVM for intel macs, is available at https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-mac-intel.tar.xz and for arm macs there is https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-mac-arm.tar.xz. After downloading, untar the file in a terminal and add it to your path like so:
tar Jxf llvm15.0-mac-arm.tar.xz
xattr -rd com.apple.quarantine llvm15.0
export PATH=$(pwd)/llvm15.0/bin:$PATH
Building LLVM from source
The LLVM project itself has a guide to installing from source which you may need to consult. First of all clone our LLVM repository:
git clone --depth 1 --branch solana-rustc/15.0-2022-08-09 https://github.com/solana-labs/llvm-project
cd llvm-project
Now run cmake to create the makefiles. Replace the installdir argument to CMAKE_INSTALL_PREFIX
with a directory where you would like to have LLVM installed, and then run the build:
cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On '-DLLVM_ENABLE_PROJECTS=clang;lld' \
-DLLVM_ENABLE_TERMINFO=Off -DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ZSTD=Off \
-DCMAKE_INSTALL_PREFIX=installdir -B build llvm
cmake --build build --target install
Once the build has succeeded, the installdir/bin has to be added to your path so the
Solang build can find the llvm-config
from this build:
export PATH=installdir/bin:$PATH
And on Windows, assuming installdir was C:\Users\User\solang-llvm
:
set PATH=%PATH%;C:\Users\User\solang-llvm\bin
Step 2: Build Solang
Once you have the correct LLVM version in your path, ensure you have GNU make installed and simply run:
git clone https://github.com/hyperledger/solang/
cd solang
cargo build --release
The executable will be in target/release/solang
.
Alternative step 2: Build Solang from crates.io
The latest Solang release is on crates.io. Once you have the correct LLVM version in your path, ensure you have GNU make installed and simply run:
cargo install solang