1

我正在为跟踪库开发 Mac 启动器 - 通过将库添加到DYLD_INSERT_LIBRARIES(Mac 等价于LD_PRELOAD)来进行跟踪。然后,随着进一步的进程产生,该DYLD_INSERT_LIBRARIES变量由跟踪库传播。

问题是我需要 32 位版本的跟踪库用于 32 位跟踪进程,而 64 位版本用于 64 位跟踪进程。在我拥有的 Linux 启动器中,这是通过使用${LIB}in实现的LD_PRELOAD- 动态加载器 ( ld.so) 然后在加载进程时将其替换为“正确的东西”。

在 Mac 上是否有等效于ld.so' 的${LIB}变量?当我查看手册页( https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/dyld.1.htmldyld )时,我无法立即看到一个,但我可能会只是读错了。如果没有,请问有没有其他方法可以达到同样的效果?

4

1 回答 1

2

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

于 2013-02-27T08:05:00.453 回答