【发布时间】:2012-06-12 11:24:41
【问题描述】:
我有一个 LD_PRELOAD 文件。在什么操作系统和条件下,我应该编译这个预加载以在大多数系统(Unix/Linux)上工作。最需要的是 FreeBSD、Ubuntu、CenstOS、Solaris。
谢谢!
【问题讨论】:
标签: c++ gcc compilation g++ ld-preload
我有一个 LD_PRELOAD 文件。在什么操作系统和条件下,我应该编译这个预加载以在大多数系统(Unix/Linux)上工作。最需要的是 FreeBSD、Ubuntu、CenstOS、Solaris。
谢谢!
【问题讨论】:
标签: c++ gcc compilation g++ ld-preload
你需要把它编译成一个共享库。以下是我通常的编译方式:
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
然后,它只会为该命令行运行设置它,而不会影响您之后启动的任何其他程序。
【讨论】:
g++ 前面需要制表符而不是空格。问候。
.so 文件。问候。