使用 musl libc 在系统上预加载库

使用 musl libc 在系统上预加载库

在 glibc 系统上,当我想要预加载一个库(例如,hardened_malloc)时,我会这样做:

echo /usr/lib/libhardened_malloc > /etc/ld.so.preload

但是 musl 不支持它。

有人知道如何在 musl 上全局预加载库吗?我不想对每个二进制文件都使用 LD_PRELOAD。

答案1

musl 自由 环境变量 本文包含这个有用的变量:

LD_预加载

以冒号分隔的共享库列表,动态链接器将在处理应用程序的依赖项列表之前预加载这些共享库。组件可以是默认库搜索路径中的绝对或相对路径名或文件名。

在调用 setuid、setgid 或具有其他提升功能的程序中,此变量被完全忽略。


为了使环境变量持久,您需要在以下配置文件之一中定义这些变量:

  • /etc/environment:用于设置系统范围的环境变量,例如:
    FOO=bar
  • /etc/profile:每当进入 bash 登录 shell 时加载,例如:
    export JAVA_HOME="/path/to/java/home"
  • ~/.bashrc:每个用户 shell 特定的配置文件,例如:
    export PATH="$HOME/bin:$PATH"

相关内容