zipfile — static lib (not shared lib) is created using q(ar) and conceptually a zipfile
- static = unshared. A static library (some.a) is “copied” into your executable image, enlarging it.
shared = dynamic library — In unix, some.so.n means SSSharedObject. In windows some.dll means DDDynamic Link Library.
- baggage — using Static library, your executable doesn’t carry any external “baggage” i.e. the shared library files.
- recompile — of your executable is necessary only if using “static” library
http://stackoverflow.com/questions/4250624/ld-library-path-vs-library-path explained it well — your libraries can be static or shared. If it is static then you don’t need to search for the library after your program is compiled and linked. If shared then LD_LIBRARY_PATH is used when searching for the shared library, even after your executable has been successfully compiled and linked. This resembles dotnet DLL or jars — you can upgrade a DLL/jar without recompiling the executable.