使用makefile,LD_PRELOAD到可执行文件

Using makefile, LD_PRELOAD to executable file

我有两个文件,"abc.c" 和 "run"

我想制作一个执行以下两个指令的可执行二进制文件

gcc -m32 -O2 -Wall -DRUNTIME -shared -fPIC -o a.so abc.c -ldl
LD_PRELOAD="a.so" ./run

我尝试在 linux 中使用 makefile,但失败了。

我可以使用 makefile 制作可执行的二进制文件吗?

理想情况下,编译应该使用makefile。要自动执行 shell 命令,您可以使用 shell 脚本。

也许,在你的情况下,你可以写一个shell脚本,它会先调用make -f <SomeMakeFile>命令来编译生成库(.so),然后运行 带有 LD_PRELOAD 指令的目标二进制文件。

我会这样做:

all: a.so

test: a.so
        LD_PRELOAD="a.so" ./run

a.so: abc.c
        gcc -m32 -O2 -Wall -DRUNTIME -shared -fPIC -o a.so abc.c -ldl

clean:
        rm -f a.so

将其保存在名为 Makefile 的文件中。请注意,缩进必须是单个制表符——Whosebug 在上面的输出中破坏了它。 现在有 4 个目标,仅调用 make 将生成共享库,显式调用 make test 将 运行 您的测试。如果需要,make test 将首先构建库。 我很想增加一些灵活性,但这不是您要求的...