我有两个文件," abc.c"和"运行"
我想制作一个可执行的二进制文件,它可以执行两个以下的插图
gcc -m32 -O2 -Wall -DRUNTIME -shared -fPIC -o a.so abc.c -ldl
LD_PRELOAD="a.so" ./run
我尝试在linux中使用makefile,但失败了。
我可以使用makefile制作可执行的二进制文件吗?
答案 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
将首先构建库。
我很想投入一些灵活性,但这不是你要求的......