{"id":18273090,"url":"https://github.com/tobimensch/preloadify","last_synced_at":"2025-09-15T02:34:57.885Z","repository":{"id":57454607,"uuid":"260152014","full_name":"tobimensch/preloadify","owner":"tobimensch","description":"Create fat binaries with ease","archived":false,"fork":false,"pushed_at":"2020-05-02T12:39:07.000Z","size":46,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-24T14:17:33.295Z","etag":null,"topics":["binary","dynamic","easy-to-use","executable","fast","packager","preload-library","statify"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tobimensch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-30T08:12:57.000Z","updated_at":"2025-04-19T18:58:57.000Z","dependencies_parsed_at":"2022-08-29T05:30:12.024Z","dependency_job_id":null,"html_url":"https://github.com/tobimensch/preloadify","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/tobimensch/preloadify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobimensch%2Fpreloadify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobimensch%2Fpreloadify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobimensch%2Fpreloadify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobimensch%2Fpreloadify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tobimensch","download_url":"https://codeload.github.com/tobimensch/preloadify/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobimensch%2Fpreloadify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275190469,"owners_count":25420776,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binary","dynamic","easy-to-use","executable","fast","packager","preload-library","statify"],"created_at":"2024-11-05T12:04:59.961Z","updated_at":"2025-09-15T02:34:57.842Z","avatar_url":"https://github.com/tobimensch.png","language":"Python","readme":"# preloadify\nCreate fat binaries with ease\n\nThis script is not a development of 2020, this GitHub repository could create a false impression.\nIt was lurking around on my computer for years, because I never thought it was quite finished,\nand therefore never got around to releasing it. In truth it worked the whole time for the current\nset of features, and I wanted to add some more before releasing it.\n\nThis script can be a great alternative to static compilation, or to cases where you have a\ndynamically linked binary, that you'd like to port to other systems, but you aren't willing\nto compile from source, or for some reason can't. To make this work preloadify uses LD_PRELOAD,\na unpacking/run script at the beginning of the created binary, tar, optional compression,\nand patchelf.\n\nPreloadify goes so far as to include the ld.so in the created binary (which is a sort of\nself-contained package) in order to make absolutely sure that it will run on every Linux\nsystem with compatible processor architecture, in example all 64bit-x86 Linux systems.\nThis allows for porting binaries from a full-fledged GNU/Linux to a bare-bones embedded\nLinux system, that has for example BusyBox, or some uncommon libc, or no ld.so at all.\n\nThe --pack command line option allows you to pack other binaries into the same final fat binary,\nthe kicker here is that for those additional binaries preloadify also searches for needed\ndynamic libraries and packs them into the fat binary, too. This means that the executable you\nwanted to convert into a fat executable can also call those other packed executables at runtime\nand they are also garantueed not to be missing any dynamic library dependencies.\n\nInstall with pypi:\n```\npip3 install preloadify\n```\n\nDependencies:\n- docopt (pip3 install docopt)\n- patchelf\n- tar\n\nThe help output (preloadify --help) should be sufficient to understand how it works:\n```\nUsage: preloadify [options] EXECUTABLE OUTPUTFILE\n\nCreate an executable self-containing all dynamic library dependencies of the original.\n\nOptions:\n  -l, --list                  Alphabetically sorted list of all dynamic libraries\n                              that are included in the preloadified executable.\n  -s, --size                  Lists the size of all dynamic libraries included in the\n                              preloadified executable sorted by size.\n  -b, --blacklist FILE        Using a blacklist you can exclude dynamic libraries\n                              from being included in the preloadified executable.\n                              Blacklist files have the following format:\n                                  libsomelib\n                                  libsomeotherlib\n  -a, --addlist FILE          Include libraries and their respective dependencies\n                              from a list in preloadified executable.\n                              These usually are libraries that get dynamically\n                              linked at runtime.\n                              Addlist files have the following format:\n                                  libsomelib\n                                  libsomeotherlib\n                                  /path/to/lib\n  -c, --compression METHOD    One of gzip, bzip2 and xz.\n                              By default compression is disabled.\n                              Note that compression can influence portability negatively.\n  -t, --tmpdir TMPDIR         Set a different tmp directory. Default is /tmp.\n  -r, --run                   Run preloadified executable as soon as it is created.\n                              (For testing purposes)\n  --chrootify                 With this option the wrapper creates a chroot environment\n                              for the executable emulating the system without its libraries.\n                              This can be useful to test whether all library dependencies\n                              have been taken care of through preloadifying.\n  --pack EXECUTABLES          List of additional executables that should be part of the\n                              preloadified executable separated by comma.\n                              i.e. --pack bash,/path/to/program\n                              Note that only the main executable will be executed\n                              when executing the generated outputfile.\n  -h, --help                  Show this help message and exit\n  -v, --version               Display version information\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftobimensch%2Fpreloadify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftobimensch%2Fpreloadify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftobimensch%2Fpreloadify/lists"}