有人可以告诉我在最新版本的AIX上是否存在与LD_PRELOAD类似的内容?更具体地说,我需要拦截从我的二进制文件到time()的调用,返回一个恒定的时间,用于测试目的。
答案 0 :(得分:8)
AIX 5.3引入了LDR_PRELOAD
(对于32位程序)和LDR_PRELOAD64
(对于64位程序)变量。它们与Linux上的LD_PRELOAD类似。两者都是以冒号分隔的库列表,符号将先于列出的共享对象进行抢先加载。
例如,如果您有共享对象foo.so:
LDR_PRELOAD=foo.so
如果使用存档,请使用AIX样式指定存档中的对象:
LDR_PRELOAD="bar.a(shr.so)"
用冒号分隔多个条目:
LDR_PRELOAD="foo.so:bar.a(shr.so)"
答案 1 :(得分:1)
AIX 5L使用LDR_PRELOAD变量。
答案 2 :(得分:0)
不是我知道的。我们做过的最近的事情(使用malloc / free进行调试)是
这样,我们的功能首先由装载机拾取,我们提供的任何功能都是由原装提供的。
这是不久前的事。 AIX 5L应该更像Linux(因此是L),因此它可以完全满足您的需求。
或者,如果您有源,请使用mytime()调用time()并提供您的函数。您没有测试完全相同的软件,但这种微小变化的差异无关紧要。