dyld是否等价$ {LIB}?

时间:2012-08-10 09:25:10

标签: tracing dyld ld-preload

我正在开发一个用于跟踪库的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)时,我无法立即看到一个,但我可能只是读错了。如果没有,请问有另一种方法可以达到同样的效果吗?

1 个答案:

答案 0 :(得分:2)

我认为您想要的是将插入的库编译为胖二进制文件(例如,同一二进制文件中的多个体系结构)。这应该允许单个值DYLD_INSERT_LIBRARIES适用于各种体系结构的子进程。