Introduction

StaticX takes a typical dynamic executable and bundles it, along with all of its shared library dependencies, into a single executable. This resulting executable is actually the StaticX bootloader with an attached archive containing the user executable and libraries. The bootloader will extract the archive to a temporary directory, fix up the executable in its new home, launch it, and clean up after it exits.

StaticX is inspired by PyInstaller, and includes special provisions for working well with PyInstalled executables as input:

 __________       __________          ________________
|          |     |           \       |                |
|  Python  |     |            \      |   PyInstalled  |
|   App    | --> | PyInstaller > --> |      App       |
|          |     |            /      | (reqs libc...) |
|__________|     |___________/       |________________|
                                            |
            +-------------------------------+
            |     __________          ________________
            |    |           \       |                |
            |    |            \      |    StaticX     |
            +--> |  StaticX    > --> |      App       |
                 |            /      |                |
                 |___________/       |________________|