我有一个LD_PRELOAD文件。在什么操作系统和条件我应该编译这个预加载在大多数系统(Unix / Linux)上工作。最需要的是FreeBSD,Ubuntu,CenstOS,Solaris。
谢谢!
答案 0 :(得分: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
然后,它只会为该命令行运行设置它,并且不会影响您之后启动的任何其他程序。