Add howto.md
This commit is contained in:
commit
287c98d8ff
39
howto.md
Normal file
39
howto.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
1. Declare functions in a header file using ifndef macros to prevent multiple includes:
|
||||
|
||||
```c
|
||||
/* example.h file */
|
||||
#ifndef EXAMPLE_H
|
||||
#define EXAMPLE_H
|
||||
|
||||
void example(void);
|
||||
|
||||
#endif
|
||||
```
|
||||
|
||||
Do this for each file. In this example `another-example.c`, `third-example.c`.
|
||||
|
||||
2. Create implementation / definition of that function:
|
||||
|
||||
```c
|
||||
/* example.c file */
|
||||
void example(void);
|
||||
{
|
||||
/* do something */
|
||||
}
|
||||
```
|
||||
|
||||
3. Compile to object file: `clang -c example.c another-example.c third-example.c`. You can also do `clang -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`
|
||||
Loading…
Reference in a new issue