Skip to main content

Compililing C++ code

This tutorial shows how a .cpp file can be converted into a circuit IR.

Using clang from a pre-built binary

If clang has been installed from a pre-built binary, use the following command.

clang-zkllvm -S -emit-llvm -target assigner -O1 -o circuit.ll path/to/circuit.cpp

Using clang from sources

If clang has been built from sources, export the CLANG_ZKLLVM environmental variable.

export CLANG_ZKLLVM="path/to/clang"
clang location

"path/to/clang" is usually equal to "zkllvm/build/libs/circifier/llvm/bin.

Afterward, call $CLANG_ZKLLVM.

$CLANG_ZKLLVM -S -emit-llvm -target assigner -O1 -o circuit.ll path/to/circuit.cpp
tip

If a circuit contains includes from the std library, add the following options when calling $CLANG_ZKLLVM.

-I/path/to/zkllvm//libs/stdlib/libcpp \
-I/path/to/zkllvm/libs/circifier/clang/lib/Headers \
-I/path/to/zkllvm/libs/stdlib