{"id":51011531,"url":"https://github.com/fossable/solder","last_synced_at":"2026-06-21T03:03:55.913Z","repository":{"id":352338559,"uuid":"1208937727","full_name":"fossable/solder","owner":"fossable","description":"Fuse shared libraries into ELFs","archived":false,"fork":false,"pushed_at":"2026-04-19T14:56:47.000Z","size":175,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-19T16:34:41.709Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fossable.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-12T23:49:28.000Z","updated_at":"2026-04-19T15:16:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fossable/solder","commit_stats":null,"previous_names":["cilki/solder","fossable/solder"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/fossable/solder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fsolder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fsolder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fsolder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fsolder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fossable","download_url":"https://codeload.github.com/fossable/solder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fsolder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34592060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"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":[],"created_at":"2026-06-21T03:03:55.180Z","updated_at":"2026-06-21T03:03:55.905Z","avatar_url":"https://github.com/fossable.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# solder\n\n\u003e Don't rebuild it, `solder` it!\n\u003e\n\u003e Actually, you should probably try rebuilding it first, but if that doesn't\n\u003e work out, then you can `solder` it.\n\n**solder** is a post-link static merger for ELF executables. It extracts symbols\nfrom shared libraries and fuses them directly into executables, removing runtime\ndependencies altogether.\n\n## Partial static linking\n\nThe primary use case for `solder` is _partial static linking_.\n\nDepending on what build tool you're using, you can have vastly different\nexperiences. Sometimes you can simply add `-l:libexample.a` to your `LDFLAGS`\nand it works first try. Sometimes it's not that easy. If you find yourself\nhacking `configure` scripts or generated Makefiles to accomplish this, consider\njust post-processing your binary with `solder` instead.\n\nYou don't have to recompile anything. Just give it your executable and the\nshared objects you want statically linked. Just note the following libraries are\nexcluded because static linking them can cause unpleasant problems (even when\nyou properly static link them at build time).\n\n- ld-linux\n- ld-musl\n- linux-vdso\n- linux-gate\n- libc\n- libm\n- librt\n- libpthread\n- libdl\n- libresolv\n- libnss\\_\n- libgcc_s\n\nOnly symbols that are actually used will be merged into the final executable.\nFor example, `md5sum` is only about 56K, but it dynamically links\n`libcrypto.so.3` which is 6.5M.\n\n### Nixpkgs\n\nFor binaries built from [nixpkgs](https://github.com/NixOS/nixpkgs), you can\nmake them fully portable to other systems by first `solder`-ing in the\nlibraries, then `patchelf`-ing the library path back to normal. I've used this\nto take advantage of the vast quantity of software available in nixpkgs on\nembedded systems where I can't install `nix`, etc.\n\n## Usage\n\n```sh\n# Merge all possible libraries into the executable (in-place)\nsolder ./myapp\n\n# Merge only specific libraries\nsolder ./myapp -m libfoo.so.1 -m libbar.so.2\n\n# Add additional library search paths\nsolder ./myapp -L /opt/mylibs -L ./libs\n\n# Preview what would happen without writing output\nsolder ./myapp --dry-run\n```\n\n## How It Works\n\n- Parses the executable's dynamic section to identify imported symbols\n- Resolves which shared libraries provide those symbols (using regular library\n  search paths)\n- Extracts the minimal set of code/data needed\n  - Uses symbolic execution to identify jump tables in .rodata\n- Applies relocations and creates trampolines for any remaining external calls\n- Appends a new `PT_LOAD` segment containing the merged code\n- Patches GOT entries to point directly to the merged symbols\n- Removes the merged libraries from `DT_NEEDED`\n\n## Limitations\n\n- x86_64 only\n- We can't merge `dlopen` libraries\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffossable%2Fsolder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffossable%2Fsolder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffossable%2Fsolder/lists"}