使用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
将首先构建库。
我很想增加一些灵活性,但这不是您要求的...
我有两个文件,"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
将首先构建库。
我很想增加一些灵活性,但这不是您要求的...