You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Nix包管理器与Termux的链接问题排查

解决Termux上Nix工具的GNU链接器脚本错误

我之前也帮别人排查过类似的Termux+Nix兼容性问题,你遇到的这个错误根源确实是Termux自带的ld链接器无法正确解析Nix生成的GNU链接器脚本,而罪魁祸首就是Termux默认设置的LD_PRELOADLD_LIBRARY_PATH环境变量——它们会强制优先加载Termux自身的库,干扰了Nix工具的依赖解析逻辑。

临时修复方案

你已经发现取消这两个变量就能正常运行,直接在终端里执行这两条命令就能临时解决:

unset LD_PRELOAD
unset LD_LIBRARY_PATH

执行完之后再运行nix-storenix-env这些Nix工具,就不会再弹出链接器脚本相关的错误提示了。

持久化配置(不用每次手动操作)

如果不想每次打开终端都重复执行unset命令,可以把这两行加到你的shell配置文件里,一劳永逸:

  • 如果你用的是Bash,编辑~/.bashrc文件
  • 如果你用的是Zsh,编辑~/.zshrc文件

在文件末尾添加这段内容:

# 修复Termux中Nix的链接器脚本兼容性问题
unset LD_PRELOAD
unset LD_LIBRARY_PATH

保存后重启终端,或者执行source ~/.bashrc(Bash用户)、source ~/.zshrc(Zsh用户)让配置立即生效。

为什么这个方案有效?

Nix的包都是独立构建的,每个包的依赖链都是自给自足的,完全不依赖系统环境的库文件。去掉Termux的LD_PRELOADLD_LIBRARY_PATH变量,就是让Nix工具使用自身打包的链接器和依赖库,从根源上避免了Termux系统库和Nix库的冲突。

内容的提问来源于stack exchange,提问作者Giorgio Mossa

火山引擎 最新活动