πŸ‘―β€β™€οΈStatically VS Dynamically binding

What is the difference between statically binding and dynamically loading a shared library in Go

Overview

Statically binding and dynamically loading a shared library in Go have the following differences:

Statically Binding:

  • The shared library is linked at compilation time.

  • The linker and OS connect a library function to a memory address.

  • The function is part of the program inside the executable as it was written by us for that program.

  • The executable file size is larger because the library functions are included in the executable.

  • The library functions are available immediately when the program starts.

Dynamically Loading:

  • The shared library is linked at runtime.

  • The function symbols are dynamically loaded and bound at runtime.

  • The shared library is loaded into memory only when needed.

  • The executable file size is smaller because the library functions are not included in the executable.

  • The library functions are not available immediately when the program starts, but only when the shared library is loaded into memory.

In Go, there are two ways to use a shared object library to call Go functions from C:

  • Statically binding the shared library at compilation but dynamically linking it at runtime.

  • Dynamically loading the shared library and binding the Go function symbols at runtime.

Last updated