Statifier is a tool for creating portable, self-containing Linux executables.
Statifier create from dynamically linked executables
and all it's libraries one file.
This file can be copied and run on another machine
without need to drag all it's libraries.
Dynamically linked executables are smaller then statically linked.
From the other side dynamically linked executables use shared libraries
compiled in PIC (position independend code) which is slower than "normal" one.
Files, created by statifier ("pseudo-static")
combine disadvantages of both of them:
- Huge - much bigger than statically linked
- Still use PIC code
So, why one will use it ?
Ok, "pseudo-static" files have some advantages too:
But all these one can got with usual static files.
- Everything in one file - so distributing is simple
- Same file can be used for computers with different libraries' versions
- Faster startup
So, why use statifier and huge "pseudo-static" executables instead of static ?
- there is no source code available
- there is no compiler (or build-chain) available
- static link does not work or it's not obvious how do it
- to preserve memory layout - static link will change it and may "wake-up" hidden bugs
- for "permanent link" LD_PRELOAD library into executable
- linux x86
- linux x86_64
- linux alpha (was dropped in version 1.7.0)
Statified executables not always work on systems with stack or VDSO randomization. Unfortunatelly I yet found a way to fix this.
There is another solution: Ermine.
Ermine, unlike statifier not affected by stack/VDSO randomization.
Statifier and Ermine features compared here
Usefull (I hope) additional
There is a rrp_statify
package, a plugin for rpmrebuild
which allow statify all executables in the package.
In order to make statified executables smaller one can try to use
Libraryopt as suggested by Andrew Shewmaker.
If you have suggestions/ideas/bug report you can send it to
mailing list or forums
If it work for you I am curious to know what is your platform:
Please drop me a message
- kernel version
- libc/loader version
Statifier distributed under GPL
Statifier was written by Valery Reznic