Foreign modules may be linked to Prolog in three ways. Using static linking, the extensions, a small description file and the basic SWI-Prolog object file are linked together to form a new executable. Using dynamic linking of object files, the extensions are linked into the running Prolog process. Finally, on some operating systems SWI-Prolog allows for loading dynamic libraries (called shared libraries (.so files) on Unix systems and Dynamic Link Libraries (.dll files) on many PC based operating systems.