Development
UNIX-Like Systems
```bash
apk add g++ git make cmake ninja
```  
Note that Alpine Linux uses the musl libc as its C standard library.
There are no official binaries distributed for musl libc but DuckDB can be build with it manually following the instructions on this page.  
#### Cloning the Repository {#docs:dev:building:build_instructions::cloning-the-repository}  
Clone the DuckDB repository:  
```bash
git clone https://github.com/duckdb/duckdb
```  
We recommend creating a full clone of the repository. Note that the directory uses approximately 1.3 GB of disk space.  
#### Building DuckDB {#docs:dev:building:build_instructions::building-duckdb}  
To build DuckDB, we use a Makefile which in turn calls into CMake. We also advise using [Ninja](https://ninja-build.org/manual.html) as the generator for CMake.  
```bash
GEN=ninja make
```  
> **Best practice.  ** It is not advised to directly call CMake, as the Makefile sets certain variables that are crucial to properly building the package.  
Once the build finishes successfully, you can find the `duckdb` binary in the `build` directory:  
```bash
build/release/duckdb
```  
#### Linking Extensions {#docs:dev:building:build_instructions::linking-extensions}  
For testing, it can be useful to build DuckDB with statically linked core extensions. To do so, run:  
```bash
CORE_EXTENSIONS='autocomplete;httpfs;icu;parquet;json' GEN=ninja make
```  
This option also accepts out-of-tree extensions:  
```bash
CORE_EXTENSIONS='autocomplete;httpfs;icu;parquet;json;delta' GEN=ninja make
```  
For more details, see the [“Building Extensions” page](#docs:dev:building:building_extensions).