About
native library are object file (binary) that has been compiled to the target operating system
They can be used as libary in a application
There is two types of OS library:
- or Static
See shared_vs_static
Interface
A native interface is an interface that permits to call native library as a normal library.
Example:
- http://www.swig.org: SWIG is an interface compiler that connects programs written in C and C++ with scripting languages such as Perl, Python, Ruby, and Tcl.
Shared vs Static
Memory Footprint
- Shared libraries can be used by any application software on the system without loading multiple copies into memory.
- Static libraries copy the code directly into the application therefore growing every application by the size of all the libraries they use.
In most modern Unix-like systems, including Linux, programs are by default compiled to use shared library (so, dll)
- Static libraries (.a suffix) are incorporated into the binary at link time
- whereas dynamic ones (so, dll suffix) are referenced by location.
Code versioning
- Shared libraries have no built-in mechanism for backward compatibility. Minor changes may cause the application to crash.
- Static libraries avoid this problem because the version that was used to build the application is included inside it, so even if a newer version exists elsewhere on the system, this does not affect the application.