Note that some of the dependencies listed above are specific to one of the platforms that raylib supports.
As mentioned above, some of the listed libraries (`stb_image`, `stb_image_write`, `stb_image_resize`, `stb_vorbis`, `jar_mod`, `jar_xm`, `glad` and `mini_al`) are included with raylib as single-file, header-only libraries, and generally only depend on the C standard library for the target platform (msvcrt, libc, bionic et cetera). They are compiled together with raylib (no need to manually link libraries).
As mentioned above, some of the listed libraries are included with raylib as single-file, header-only libraries, and only depend on the C standard library for the target platform (msvcrt, libc, bionic, ...). They are compiled together with raylib (no need to manually link libraries).
Though raylib has no external dependencies, there are some platform-specific system libraries that do need to be linked when compiling [the collection of examples](https://github.com/raysan5/raylib/tree/master/examples). The following table lists the required libraries.
DESKTOP:Linux | `OpenGL`, `X11` | Also requires linkage with `libm`(math), `pthreads`(POSIX threads), `dl`(dynamic loading) and `X11` window system specific libs: `X11`, `Xrandr`, `Xinerama`, `Xi`, `Xxf86vm` and `Xcursor`
DESKTOP:FreeBSD | `OpenGL`, `X11` | Also requires linkage with `libm`(math), `pthreads`(POSIX threads), `dl`(dynamic loading) and `X11` window system specific libs: `X11`, `Xrandr`, `Xinerama`, `Xi`, `Xxf86vm` and `Xcursor`
DESKTOP:OSX | `OpenGL`, `Cocoa` | Required for window creation
ANDROID | `EGL`, `OpenGLES2.0`, `OpenSLES` | Code must be compiled using `Android NDK` libraries. Requires linkage with -`native_app_glue`, `log`, `android`, `atomic`, `libc`, `libm`(math) and `dl`(dynamic loading)
RASPBERRY PI | `EGL`, `OpenGLES2.0`, `bcm_host` | Graphics run in native mode using `bcm_host` (no `XWindows` required) and inputs are also natively read (no `XWindows` input events), also requires linkage with `libm`(math), `pthreads`(POSIX threads) and `dl`(dynamic loading).
HTML5 (Web) | `WebGL` | Code must be compiled using `emscripten SDK`, dependencies linkage is automatically detected.
DESKTOP:macOS | `OpenGL`, `Cocoa` | Required for window creation
ANDROID | `EGL`, `OpenGLES2.0`, `OpenSLES` | Code must be compiled using `Android NDK` libraries. Requires linkage with `native_app_glue`, `log`, `android`, `atomic`, `libc`, `libm`(math) and `dl`(dynamic loading)
RASPBERRY_PI | `EGL`, `OpenGLES2.0`, `bcm_host` | Graphics run in native mode using `bcm_host` (no `XWindows` required) and inputs are also natively read (no `XWindows` input events), also requires linkage with `libm`(math), `pthreads`(POSIX threads) and `dl`(dynamic loading).
RASPBERRY_PI:DRM | `EGL`, `OpenGLES2.0`, `DRM`, `GBM` | Graphics run in native mode using `DRM` (no `XWindows` required) and inputs are also natively read (no `XWindows` input events), also requires linkage with `libm`(math), `pthreads`(POSIX threads) and `dl`(dynamic loading).
WEB (HTML5) | `WebGL` | Code must be compiled using `emscripten SDK`, dependencies linkage is automatically detected.
raylib is [highly modular by design](https://github.com/raysan5/raylib/wiki/raylib-architecture). Many modules can be omitted when they are not being used, and consequently, the libraries used by those modules will also be redundant.