{"id":15570792,"url":"https://github.com/keith/dylibtree","last_synced_at":"2025-06-15T03:08:00.998Z","repository":{"id":177673550,"uuid":"660328133","full_name":"keith/dylibtree","owner":"keith","description":"Inspect dynamic dependencies of Mach-O binaries recursively","archived":false,"fork":false,"pushed_at":"2023-10-23T18:45:48.000Z","size":62,"stargazers_count":89,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-15T03:07:57.661Z","etag":null,"topics":["macho","xcode"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/keith.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-06-29T19:00:36.000Z","updated_at":"2024-12-30T12:16:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"89795b36-4b5b-4954-b7fe-8cfd4ff3868b","html_url":"https://github.com/keith/dylibtree","commit_stats":null,"previous_names":["keith/dylibtree"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/keith/dylibtree","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keith%2Fdylibtree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keith%2Fdylibtree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keith%2Fdylibtree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keith%2Fdylibtree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keith","download_url":"https://codeload.github.com/keith/dylibtree/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keith%2Fdylibtree/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259914919,"owners_count":22931328,"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","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":["macho","xcode"],"created_at":"2024-10-02T17:44:43.639Z","updated_at":"2025-06-15T03:08:00.950Z","avatar_url":"https://github.com/keith.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dylibtree\n\n`dylibtree` is a tool for inspecting the dynamic dependencies of a\nMach-O binary recursively. It can be useful to understand what library\nloads another library that you may not expect. If it helps you can think\nof `dylibtree` as a recursive `otool -L`, or as a Mach-O version of `lddtree`.\n\n# Usage\n\nTo list all recursive dynamic dependencies, just pass a binary:\n\n```\n$ dylibtree /usr/bin/xcrun\n/usr/bin/xcrun:\n  /usr/lib/libxcselect.dylib:\n    /usr/lib/libSystem.B.dylib:\n      /usr/lib/system/libcache.dylib:\n        /usr/lib/system/libsystem_malloc.dylib:\n          /usr/lib/system/libcompiler_rt.dylib:\n            /usr/lib/system/libunwind.dylib:\n              /usr/lib/system/libsystem_malloc.dylib\n...\n```\n\nYou can limit the depth (and in turn the output) with `--depth N`:\n\n```\n$ dylibtree /usr/bin/xcrun --depth 2\n/usr/bin/xcrun:\n  /usr/lib/libxcselect.dylib:\n    /usr/lib/libSystem.B.dylib:\n  /usr/lib/libSystem.B.dylib\n```\n\nYou can also exclude various prefixes depending on what you're\ninvestigating with `--ignore-prefix`:\n\n```\n$ dylibtree /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/MacOS/Instruments --ignore-prefix /usr/lib --ignore-prefix /System/Library\n/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/MacOS/Instruments:\n  @rpath/DVTInstrumentsUtilities.framework/Versions/A/DVTInstrumentsUtilities:\n  @rpath/DVTInstrumentsFoundation.framework/Versions/A/DVTInstrumentsFoundation:\n    @rpath/CoreSymbolicationDT.framework/Versions/A/CoreSymbolicationDT:\n...\n```\n\n# Installation\n\n```\nbrew install keith/formulae/dylibtree\n```\n\n## Implementation notes\n\n- `dylibtree` uses the dyld shared cache, or other platform's runtime\n  roots to discover dylibs. If you want to run `dylibtree` on a binary\n  for a non macOS platform you must have that platform installed in\n  Xcode, and must have built to a device with that platform to\n  populate the symbols.\n- `dylibtree` looks up the current locations for the runtime root for a\n  platform, that can change over time, or you might download one\n  manually that you want to use instead. If so you can pass\n  `--runtime-root` or `--shared-cache-path` to override the default\n  discovery. If the location has changed please submit an issue or PR\n  so we can update it for everyone.\n- dyld shared cache extraction uses Xcode's internal library, which\n  means your currently selected Xcode version must support any shared\n  caches being extracted. If you're on a beta version you'll likely need\n  to have a beta Xcode selected (or set with `DEVELOPER_DIR`).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeith%2Fdylibtree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeith%2Fdylibtree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeith%2Fdylibtree/lists"}