1 KiB
1 KiB
- Declare functions in a header file using ifndef macros to prevent multiple includes:
/* example.h file */
#ifndef EXAMPLE_H
#define EXAMPLE_H
void example(void);
#endif
Do this for each file. In this example another-example.h, third-example.h.
- Create implementation / definition of that function:
/* example.c file */
void example(void)
{
/* do something */
}
Do this for each file. In this example another-example.c, third-example.c.
- Compile to object file:
clang -c example.c another-example.c third-example.c. You can also doclang -c *.c.
To create archive (static library): llvm-ar r outputname.a example.c another-example.c third-example.c
To create shared object (dynamic library): ld.lld --shared -o outputname.so example.c another-example.c third-example.c
Use either with your main:
Archive: clang main.c outputname.a
Shared object: clang main.c outputname.so
On Linux also set correct LD_LIBRARY_PATH with export LD_LIBRARY_PATH=/path/to/outputname.so