DYLD_PRINT_LIBRARIES 不起作用

2024-02-22

尝试尝试其他 DYLD_ 属性,我发现 jvm 正在操作属性,并且它们在执行过程中被忽略。
我的Java测试:

class Env {
    public static void main(String... args) {
        System.getenv().entrySet().stream().forEach(e -> System.out.println(e.getKey() + " = " + e.getValue()));
    }
}

调用:

$ export DYLD_PRINT_LIBRARIES=1
$ export MY_PRINT_LIBRARIES=2
$ javac Env.java && java Env|grep PRINT
MY_PRINT_LIBRARIES = 2
$ 

另一方面,我的 C 测试:

#include <stdio.h>

int main(int argc, char **argv, char **envp) {
    while (*envp) {
        printf("%s\n", *envp);
        envp++;
    }
    return 0;
}

调用:

$ gcc env.c && ./a.out|grep PRINT
dyld: loaded: /Users/okutane/test/java/./a.out
dyld: loaded: /usr/lib/libSystem.B.dylib
dyld: loaded: /usr/lib/system/libcache.dylib
...
dyld: loaded: /usr/lib/libc++.1.dylib
dyld: loaded: /usr/lib/libDiagnosticMessagesClient.dylib
MY_PRINT_LIBRARIES=2
DYLD_PRINT_LIBRARIES=1
$

我预计 jvm 测试也能工作,有什么解决方法吗?


随着SIP的引入,所有环境变量都匹配DYLD_*在执行受限二进制文件之前将被剥离。这包括/usr/bin/java您将使用的二进制文件:

$ ls -lOL /usr/bin/java
-rwxr-xr-x  1 root  wheel  restricted,compressed 58560 Sep  7 06:41 /usr/bin/java*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DYLD_PRINT_LIBRARIES 不起作用 的相关文章

随机推荐