使用makefile,LD_PRELOAD到可执行文件

时间:2015-06-02 11:28:58

标签: c linux shell makefile

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

我想制作一个可执行的二进制文件,它可以执行两个以下的插图

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

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

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

2 个答案:

答案 0 :(得分:3)

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

也许,在您的情况下,您可以编写一个shell脚本,它将首先调用make -f <SomeMakeFile>命令来编译并生成库(.so),然后使用alog with {运行目标二进制文件{1}}指示。

答案 1 :(得分:0)

我会这样做:

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的文件中。请注意,缩进必须是单个选项卡 - stackoverflow在上面的输出中破坏了它。 现在有4个目标,只调用make将生成共享库,显式调用make test将运行您的测试。如果需要,make test将首先构建库。 我很想投入一些灵活性,但这不是你要求的......