OSX:使用加载可执行文件动态绑定dylib

时间:2016-01-14 09:42:27

标签: macos dylib dlopen mach-o dynamic-binding

我正在使用dlopen从OSX可执行文件加载dylib。我希望dylib通过绑定回原始可执行文件来解析它的符号。这可能吗?

请注意,主可执行文件将始终具有已知名称,即我不需要动态告知dylib要绑定的内容。

要清楚,我有

X: OSX executable
D: OSX dylib
  1. 运行X。
  2. X调用dlopen(在某个时间点)打开D.
  3. D有未定义的符号,应根据X解决。
  4. 在运行D中的静态构造函数之前,OSX会自动将D中未定义的符号绑定到X
  5. N.B。关于静态ctrs的最后一部分是至关重要的。

    我基本上希望LC_LOAD_DYLIB加载命令引用回原始二进制文件。

    修改

    我很确定我可以通过添加中间dylib来解决这个问题。然后我可以这样做:

    1. 运行X。
    2. X调用dlopen(在某个时间点)打开E.
    3. E初始化一些代理符号,然后调用dlopen打开D。
    4. D的未定义符号解析E的代理符号。
    5. E使用X实现它的代理符号(手动)。
    6. 有点烦人,如果那是这样做的唯一方法。

0 个答案:

没有答案