使用makefile在c中的程序时出错

时间:2015-07-29 15:00:16

标签: 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:目标'run'的配方失败了make:*** [run]错误45

1 个答案:

答案 0 :(得分:1)

除了已经提供的关于run应该如何依赖a.outcompile的评论应该真正改为a.out或者依赖于a.out您收到此错误消息的确切原因是因为您的程序返回了非零错误值,特别是45。

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

请注意,程序似乎运行正常但仍返回错误值。一个可能的原因是您未在return函数中添加main语句。假设您正在使用bash,您可以通过echo $?查看最新程序的返回值。