在c中使用makefile执行程序时出现错误



我在使用makefile运行c程序时遇到了一个错误。当我直接在终端上运行以下命令时,程序运行正确

$ ./a.out test1.c test2.c

(a。Out是编译程序生成的可执行文件,test1.c和test2.c是命令行参数)

但是当我在makefile中写下面的代码时:

all : compile run
compile :
    gcc ConsonantVowelCount15.c
run :
    ./a.out $(INPUT)

并在终端

上运行以下命令
$ make INPUT=test1.c test2.c

它给出的输出后跟以下错误

makefile:6: recipe for target 'run' failed
make: *** [run] Error 45

除了您已经给出的关于run应该如何依赖a.outcompile应该真正更改为a.out或依赖a.out的虚假的评论之外,您得到此错误消息的确切原因是因为您的程序返回非零错误值,具体为45。

当配方中的任何命令返回非零值时,配方失败(假设Linux和大多数其他系统中0表示成功)。因此,run目标失败,因为./a.out $(INPUT)返回的不是0。当然,这是假设您已经包含了整个错误消息、错误编号和Makefile,并且错误消息不是来自run的依赖项。一个简单的检查方法是将./a.out $(INPUT)替换为true。如果一切正常,那么这就是你的程序本身。

注意,程序可能看起来运行正确,但仍然返回一个错误值。造成这种情况的一个可能原因是您没有在main函数中包含return语句。假设您使用的是bash,您可以通过echo $?查看最新程序的返回值。

相关内容

最新更新