在 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"