使用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
答案 0 :(得分:1)
除了已经提供的关于run
应该如何依赖a.out
和compile
的评论应该真正改为a.out
或者依赖于a.out
您收到此错误消息的确切原因是因为您的程序返回了非零错误值,特别是45。
当该配方中的任何命令返回非零值时,配方失败(假设Linux和大多数其他系统,其中0表示成功)。因此,run
目标失败,因为./a.out $(INPUT)
正在返回0以外的其他内容。这当然是假设您已包含整个错误消息以及错误号和Makefile,并且错误消息不是来自run
的依赖关系。一种简单的检查方法是将./a.out $(INPUT)
替换为true
。如果一切正常,那就是你的程序本身。
请注意,程序似乎运行正常但仍返回错误值。一个可能的原因是您未在return
函数中添加main
语句。假设您正在使用bash,您可以通过echo $?
查看最新程序的返回值。