0

我正在使用 GNU make隐式规则将我的二进制文件链接在一起,如下所示:

foo : foo.o bar.o

但是,我也希望之后能够foo使用UPX(通过调用upx ultra-brute foo)编译生成的二进制文件。当然,我可以这样做:

foo : foo.o bar.o
    $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
    upx --ultra-brute $@

然而,这基本上迫使我重复隐含规则,而我真正想做的只是upx ultra-brute在它已经做的事情之后再调用。有没有办法得到我想要的东西,而基本上不必手动将隐式规则写入配方?

4

1 回答 1

1

该调用upx会就地修改文件,这意味着如果它失败或被中断,make将不知道再次运行它。一般来说,您应该避免编写这样的 Makefile 规则。

如果我们将其拆分,那么它变得容易:

foo.fat: foo.o bar.o
foo: foo.fat
    upx --ultra-brute -o $@ $<
于 2017-04-28T02:43:27.947 回答