mi-malloc v1.9, v2.2, v3.2
 
Loading...
Searching...
No Matches
Building

Checkout the sources from GitHub:

git clone https://github.com/microsoft/mimalloc

Windows

Open ide/vs2022/mimalloc.sln in Visual Studio 2022 and build. The mimalloc-lib project builds a static library (in out/msvc-x64), while the mimalloc-override-dll project builds a DLL for overriding malloc in the entire program.

Linux, macOS, BSD, etc.

We use cmake as the build system:

> mkdir -p out/release
> cd out/release
> cmake ../..
> make

This builds the library as a shared (dynamic) library (.so or .dylib), a static library (.a), and as a single object file (.o).

> sudo make install (install the library and header files in /usr/local/lib and /usr/local/include)

You can build the debug version which does many internal checks and maintains detailed statistics as:

> mkdir -p out/debug
> cd out/debug
> cmake -DCMAKE_BUILD_TYPE=Debug ../..
> make

This will name the shared library as libmimalloc-debug.so.

Finally, you can build a secure version that uses guard pages, encrypted free lists, etc., as:

> mkdir -p out/secure
> cd out/secure
> cmake -DMI_SECURE=ON ../..
> make

This will name the shared library as libmimalloc-secure.so. Use cmake ../.. -LH to see all the available build options.

The examples use the default compiler. If you like to use another, use:

> CC=clang CXX=clang++ cmake ../..

Cmake with Visual Studio

You can also use cmake on Windows. Open a Visual Studio 2022 development prompt and invoke cmake with the right generator and architecture, like:

> cmake ..\.. -G "Visual Studio 17 2022" -A x64 -DMI_OVERRIDE=ON

The cmake build type is specified when actually building, for example:

> cmake --build . --config=Release

You can also install the LLVM toolset on Windows to build with the clang-cl compiler directly:

> cmake ../.. -G "Visual Studio 17 2022" -T ClangCl

Single Source

You can also directly build the single src/static.c file as part of your project without needing cmake at all. Make sure to also add the mimalloc include directory to the include path.