gcc与缓存

gcc与缓存,c,caching,compiler-construction,C,Caching,Compiler Construction,我正在开发一个C程序,奇怪的是,当我更新源文件时,在生成的可执行文件中看不到任何更改。gcc是否可能存储文件的缓存副本,即使我编译了文件,也无法获得更新版本的可执行文件?在这种情况下,如何强制编译器使用新编辑的文件 我正在使用以下内容编译代码: # gcc -o myExecFileName source_file_1.c source_file2.c 听起来你的makefile好像出了问题make使用文件时间确定是否运行编译步骤。但是,您必须拥有依赖项才能使其正常工作 注意: hello:

我正在开发一个C程序,奇怪的是,当我更新源文件时,在生成的可执行文件中看不到任何更改。gcc是否可能存储文件的缓存副本,即使我编译了文件,也无法获得更新版本的可执行文件?在这种情况下,如何强制编译器使用新编辑的文件

我正在使用以下内容编译代码:

# gcc -o myExecFileName source_file_1.c source_file2.c

听起来你的makefile好像出了问题
make
使用文件时间确定是否运行编译步骤。但是,您必须拥有依赖项才能使其正常工作

注意:

hello: hello.c
   $(CC) hello.c -o hello

在第一行,
hello:hello.c
表示查看文件
hello.c
上的时间戳,如果时间戳早于
hello
上的时间戳(或者如果
hello
不存在),则运行下面指定的compliation。

检查以确保编辑的文件与编译的文件相同。如果在多个窗口中使用多个版本的文件,则情况可能并非如此。上周发生在我身上。

回答你的问题,没有gcc不会缓存你的文件。还有别的事情。您可能正在按照@Lee D的建议更改其他目录中的文件,或者在编译之前未保存文件,或者您正在进行的更改已被删除。

您使用什么命令来编译和链接?您是否在再次编译文件之前保存文件?这取决于您的编译方式?文件一个接一个,然后链接所有内容?还是给gcc所有文件?@Wooble gcc-o myExecFileName source\u file\u 1.c source\u file2.c@Mahesh是的,我也尝试过更改函数名,但没有成功。@hourted:是根据你最近的评论,还是根据以前的评论,是
myExecFileName
gcc
-o
参数指定二进制文件的名称。这就是你必须要说的。从评论来看,他似乎根本没有使用makefile。在评论出现之前就回答了——但我离开了它,因为它很可能是对从谷歌来到这里的人最有用的解决方案。我没有使用makefile。。。我试着做了一个,它编译了,但是。。。没有什么真正改变。我的编译器疯了吗?!?在生成新的可执行文件之前,请尝试删除旧的可执行文件。这不会有什么不同,但会让你的问题变得更加明显。