我正在开发一个用于跟踪库的Mac启动程序 - 通过将库添加到DYLD_INSERT_LIBRARIES
(相当于LD_PRELOAD
的Mac),跟踪工作正常。然后,当生成进一步的进程时,跟踪库将传播DYLD_INSERT_LIBRARIES
变量。
问题是我需要32位版本的跟踪库用于32位跟踪进程,而64位版本用于64位跟踪进程。在我的Linux启动器中,这是通过在${LIB}
中使用LD_PRELOAD
来实现的 - 动态加载器(ld.so
)然后在加载进程时将其替换为“正确的东西”。
Mac上的ld.so
是否有${LIB}
个dyld
变量?当我查看手册页(https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/dyld.1.html)时,我无法立即看到一个,但我可能只是读错了。如果没有,请问有另一种方法可以达到同样的效果吗?
答案 0 :(得分:2)
我认为您想要的是将插入的库编译为胖二进制文件(例如,同一二进制文件中的多个体系结构)。这应该允许单个值DYLD_INSERT_LIBRARIES
适用于各种体系结构的子进程。