What is the Difference Between .so and .a Files in Linux?

Updated Apr 3, 2023

Reported In


Linux OS
NI driver

Issue Details

I am using an NI driver on a computer with a Linux based operating system (such as NI Linux). These drivers have installed *.so or *.a files on that computer. What are those files and how are they different?


Files with the “.a” extension are static libraries. These Libraries contain functions that are linked to the calling code at compile time and become part of the application. The NI-488.2 driver uses static libraries for example.

Files with the “.so” extension are dynamically linked shared object libraries. These are often referred to more simply as shared objects, shared libraries, or shared object libraries. Shared object libraries are dynamically loaded at run time. Shared object libraries are not part of the application; however, they must be available during the compilation process. In general, shared object libraries are analogous to DLL files on a computer with Windows. The NI-VISA driver uses shared object libraries for example.