statifier logo
 
ELF STATIFIER
 
About
 Main Page

Get It
 Via the Web
 Via Anonymous SVN
 Precompiled Packages

Documentation
 README
 News
 ChangeLog
 Installation
 THANKS
 TODO
 FAQ

 STATIFIER.1

Development
documentation
 Background
 More Details
 More Problems
 Implementation
 Statified Layout
 Data Flow
 Porting

Resources
 WEB SVN
 SourceForge Page
 Mailing List
 Forums
 Related Projects

My Other SF projects
 kbde
 ksm
 nfstimesync
 noexec
 pkgrebuild
 rpmrebuild (with Eric Gerbier)
 rrp_statify

SourceForge.net Logo

 
ELF STATIFIER MAIN PAGE

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:

  • Everything in one file - so distributing is simple
  • Same file can be used for computers with different libraries' versions
  • Faster startup
But all these one can got with usual static files.
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

Supported platforms

  • 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.

Ermine Logo 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:

  • x86/x86_64/alpha
  • distribution
  • kernel version
  • libc/loader version
Please drop me a message

Statifier distributed under GPL

Statifier was written by Valery Reznic