在NixOS中查找编译后可执行文件运行时依赖的方法是否可行?
NixOS编译的可执行文件依赖查找方法可行性分析
你的方法是可行的,具体分析如下:
- 第一步的合理性:在NixOS中编译的可执行文件,其动态链接依赖均位于Nix存储库内(你已确认
ldd不会列出存储库外内容),因此通过ldd命令可以准确获取到可执行文件直接依赖的动态库对应的Nix存储路径。 - 第二步的作用:对每个存储路径执行
nix-store --query --references $store_path,会返回该存储路径直接引用的其他Nix存储对象,也就是该动态库的直接依赖。将两步结合,就能完整递归出可执行文件的所有运行时依赖(包括直接和间接依赖)。
额外提示
如果想更高效地获取所有依赖,可以直接执行nix-store --query --requisites $executable_path,该命令能一步输出可执行文件的所有递归依赖,无需分两步操作。不过需要注意:
- 若目标是静态编译的可执行文件,
ldd会提示"not a dynamic executable",此时你的方法不适用,因为静态文件没有动态依赖项。
内容的提问来源于stack exchange,提问作者Cigarette Smoking Man
相关产品推荐
相关产品推荐

