Gcc 清理后再进行给定错误

Gcc 清理后再进行给定错误,gcc,makefile,dependencies,gnu-make,Gcc,Makefile,Dependencies,Gnu Make,虽然Make工作正常,但默认情况下它只编译那些已更改的文件,即使在我运行Make all时也是如此。它说像是什么都不做 我需要编译所有文件的一种情况是,我更改了在多个.c文件中访问的头文件中的某些内容。但是make直到我再次打开任何.c文件anysave&quit时才识别它 Makefile内容可以在本文中看到: 虽然这也是一个问题,但我想在这里讨论的实际问题有所不同 为了编译所有文件,我运行了makeclean,确实删除了所有目标文件,然后再次运行make,但这次出现了一个错误:- ...

虽然Make工作正常,但默认情况下它只编译那些已更改的文件,即使在我运行
Make all
时也是如此。它说像是什么都不做

我需要编译所有文件的一种情况是,我更改了在多个
.c
文件中访问的头文件中的某些内容。但是make直到我再次打开任何
.c
文件any
save&quit
时才识别它

Makefile内容可以在本文中看到:

虽然这也是一个问题,但我想在这里讨论的实际问题有所不同

为了编译所有文件,我运行了
makeclean
,确实删除了所有目标文件,然后再次运行
make
,但这次出现了一个错误:-

 ....
 mec/gen_crc32table > mec/crc32table.h
 mec/gen_crc32table: 1: mec/gen_crc32table: Syntax error: end of file unexpected    
 (expecting ")")
 make: *** [mec/crc32table.h] Error 2
我检查了
crc32table.h
的内容,但文件是空的。因此,我从以前的代码备份中复制了
crc32table.h
,现在它成功运行了。现在我运行
makeclean
并再次“make”检查它,但这次它工作正常

我不知道这里有什么奥秘

我猜这些台词在做一些我无法理解的事情?请帮我做这个

crc32.o: mec/crc32table.h mec/crc32.c
$(CC) -o $@ -c -I. $(CFLAGS) mec/crc32.c

mec/crc32table.h: mec/gen_crc32table
mec/gen_crc32table > mec/crc32table.h 

问题在于这个片段:

mec/crc32table.h: mec/gen_crc32table
    mec/gen_crc32table > mec/crc32table.h 
问问自己“如果
gen_crc32table
命令出现错误,会发生什么情况?”停止(良好),但留下损坏的
crc32table.h
(不良)。两种选择:(i)重新写入
gen_crc32表
,使其接受
-o
参数;(二)骗局

(一)

(ii)


如果
gen_crc32表
出现错误,
mv
将不会发生。

自动依赖关系处理(例如,知道
foo.o
必须在
bar.h
发生更改时重新生成)是一个高级主题;在尝试之前,你应该更好地学习基础知识。至于第二个问题,mec/gen_CRC32表有问题;向我们展示它是什么,也许我们可以提供帮助。@Beta
mec/gen\u crc32表
通过查看内容,看起来像是一个目标文件。还有一个文件
mec/gen_crc32 table.c
。可能它是通过编译生成的,我只能根据我的理解给出这么多信息,因为我不是实际的所有者,我只是出于我的目的修改代码,但我真正的疑问是这
在做什么?将对象文件的内容传输到头文件。这对我来说毫无意义。该规则尝试执行
gen_crc32表
,并将输出存储在文件
crc32表.h
中。如果您不了解这些工具,并且无法咨询作者,则不应该使用它们。这不是我们能解决的问题。
mec/crc32table.h: mec/gen_crc32table
    mec/gen_crc32table -o mec/crc32table.h 
mec/crc32table.h: mec/gen_crc32table
    mec/gen_crc32table >temp-file-with-an-obscure-name
    mv temp-file-with-an-obscure-name $@