我正在开发一个需要包装 libc 调用的项目,特别是文件 i/o 调用,如打开、读取、写入、关闭等。我创建了一个共享库(比如 wrapper.so)并预加载了这个 wrapper.so。通过设置 LD_PRELOAD 变量,我可以在 Linux 上成功使用这个包装器。在 MAC 上,我尝试将 DYLD_FORCE_FLAT_NAMESPACE 设置为 1,将 DYLD_INSERT_LIBRARIES 设置为 /path/wrapper.so,使用 1) .bash_profile、2)launchctl setenv、3)LaunchAgent、4)LaunchDeamon 方法,但没有任何效果。
我什至尝试通过 Info.plist 在应用程序级别为特定应用程序设置 DYLD_FORCE_FLAT_NAMESPACE、DYLD_INSERT_LIBRARIES 环境变量,但这也不起作用。
注意:我可以使用上述所有方法设置一些随机的新变量,例如 MYVAR。所以,我在设置 DYLD_* 变量时遇到了问题。你能帮我在 MAC 上设置 DYLD_FORCE_FLAT_NAMESPACE、DYLD_INSERT_LIBRARIES 变量吗?