# How to create a query module in C++

C API modules need to be compiled to a shared library so that they can be loaded
when Memgraph starts. This means that you can write the procedures in any
programming language that can work with C and be compiled to the ELF shared
library format (`.so`). `mg_procedure.h` that can be found in Memgraph
installation directory `/usr/include/memgraph` contains declarations of all
functions that can be used to implement a query module procedure. To compile the
module, you will have to pass the appropriate flags to the compiler, for
example, `clang`:

```plaintext
clang -Wall -shared -fPIC -I /usr/include/memgraph example.c -o example.so
```

For more information, check the [C API reference
guide](https://memgraph.com/docs/custom-query-modules/c/c-api).

We also made [an example module](https://memgraph.com/docs/custom-query-modules/c/c-example) to help you
start developing your own modules.
