1

我有一个 LD_PRELOAD 文件。在什么操作系统和条件下,我应该编译这个预加载以在大多数系统(Unix/Linux)上工作。最需要的是 FreeBSD、Ubuntu、CenstOS、Solaris。

谢谢!

4

1 回答 1

2

您需要将其编译为共享库。这是我通常编译我的方式:

libt.so: t.lo
        g++ -fPIC -O3 -W -Wall -shared -Wl,-export-dynamic -o $@ $^ -lc

t.lo: t.cc
        g++ -c -fPIC -O3 -W -Wall $^ -o $@

然后要使用它,在启动该文件之前将库添加到 LD_PRELOAD 环境变量。如果您bash从命令行以这种方式执行此操作:

LD_PRELOAD=libt.so executable_name -and args

然后,它只会为该命令行运行设置它,而不会影响您之后启动的任何其他程序。

于 2012-06-12T11:29:49.367 回答