raylib libc dependency - raysan5/raylib GitHub Wiki
raylib is a C library and inevitably it depends on some implementation of C standard library (libc).
While working on raylib 3.0 I took some time to analyze that dependency in detail, no plans to remove it (maybe minimize it a bit) but I think it could be useful to have the knowledge where it is required.
stdlib.h
| module | libc function | raylib function |
|---|---|---|
| core | srand() | InitTimer() |
| core | abs()rand() | GetRandomValue() |
| core | atexit() | InitKeyboard()InitTerminal() |
| shapes | fabs() | CheckCollisionCircleRec()GetCollisionRec() |
| utils | exit() | TraceLog() |
stdio.h
| module | libc function | raylib function |
|---|---|---|
| utils | sprintf() | TraceLog() |
| utils | fprintf() | SaveFileText() |
| utils | fopen()fseek()fread()fwrite()fclose() | LoadFileData()SaveFileData()LoadFileText()SaveFileText() |
string.h
| module | libc function | raylib function |
|---|---|---|
| core | strlen() | GetFileNameWithoutExt()GetDirectoryPath()GetPrevDirectoryPath()OpenURL()InitEvdevInput() |
| core | strrchr() | GetExtension()EventThreadSpawn() |
| core | strcmp() | IsGamepadName() |
| text | strcmp() | TextIsEqual() |
| text | strcpy() | TextAppend()TextReplace() |
| text | strncpy() | TextToUtf8()TextReplace() |
| text | strcat() | TextJoin() |
| text | strstr() | several funcs. |
| textures | strlen() | ImageTextEx() |
| raudio | strcmp() | IsFileExtension() |
math.h
| module | libc function | raylib function |
|---|---|---|
| models, shapes, camera | sinf()asinf()cosf()acosf()sqrtf()atan2f() | several funcs. |
| raymath | sinf()cosf()acosf()tan()fabs()sqrtf()fminf()fmaxf() | several funcs. |
| core | tan()atan2() | BeginMode3D(), InitVrSimulator() |
| text | sqrtf() | GenImageFontAtlas() |
stdarg.h
| module | libc function | raylib function |
|---|---|---|
| text | va_list, va_start(), vsprintf(), va_end() | TextFormat() |
| utils | va_list, va_start(), vsprintf(), va_end() | TraceLog() |
Considering the size of raylib, there is not much dependency on libc... that's an interesting consideration for embedded devices development where custom libc implementations could be used.