【问题标题】:libfaketime and Mac OS, LD_PRELOADlibfaketime 和 Mac OS,LD_PRELOAD
【发布时间】:2026-02-14 21:00:02
【问题描述】:

运行 Mac OS 10.7.2 并尝试运行 libfaketime 并没有任何反应。我完全按照指示安装和运行,只是时间和日期与系统中设置的完全一致?有其他人能够在 OSX 上成功运行它吗?

$ date
Mon Jan 30 21:05:09 CST 2012
$ LD_PRELOAD=./libfaketime.so.1 FAKETIME="-15d" date
Mon Jan 30 21:05:32 CST 2012

【问题讨论】:

    标签: c macos ld-preload


    【解决方案1】:

    OSX 上的所有内容都以 DYLD 为前缀,而不是 LD。他们改变了一些名字。我认为你想要的是:

    DYLD_INSERT_LIBRARIES
    

    这是一个以冒号分隔的动态库列表,在程序中指定的库之前加载。这使您可以测试在平面中使用的现有动态共享库的新模块 命名空间图像通过加载仅包含新模块的临时动态共享库。请注意,这对使用动态共享库构建两级命名空间图像的图像没有影响,除非还使用了DYLD_FORCE_FLAT_NAMESPACE

    【讨论】:

    • 谢谢!有时很难注意到明显的
    • OSX 不遗余力地让人困惑。我很确定
    • 是的,怎么样,虽然它有企业支持的全功能 unix 发行版(即 OSX),但它是微不足道的定制,完全违背了在 Unix 基础上构建操作系统的优势! !
    • @synthesizerpatel:它不仅仅是重命名环境变量。 Apple 使用与 Linux 使用的完全不同的二进制格式 (Mach-O) 和加载程序 (dyld)。他们从 NeXTStep 继承了这一点,它是在使用 glibc 加载程序之前开发的,这将是一个可行(或理智)的选择。