Makefile 不更新对象

A Makefile does not update objects

尽管我是按照 GNU make online manual 一步一步来的,但 makefile 上的一个问题仍然困扰着我。
我正在编写一个非常简单的 makefile:

OBJ = main.o funz.o

main :  $(OBJ)
    gfortran -g -o main $(OBJ)

funz.o : funz.for
    gfortran -g -c funz.for
main.o : main.for
    gfortran -g -c main.for

clean : 
    rm main.o funz.o

根据我对 makefile 的了解,funz.forfunz.o 的先决条件。每次我更改源代码 funz.formake 应该再次将 funz.o 和 link 更新为 main。但是每当我启动 make 时,我都会被告知 main 是最新的并且无法识别 funz.for 中的更改。 我发现它与相同的问题有关,但没有解决我的问题,因为我认为我的先决条件是正确的。
我错过了什么吗?

更新 1

正如 Etan Reisner 所问,这是 make -rRd 的输出:

This program built for x86_64-redhat-linux-gnu
Reading makefiles...
Reading makefile `Makefile'...
Updating makefiles....
 Considering target file `Makefile'.
  Looking for an implicit rule for `Makefile'.
  No implicit rule found for `Makefile'.
  Finished prerequisites of target file `Makefile'.
 No need to remake target `Makefile'.
Updating goal targets....
Considering target file `main'.
  Considering target file `main.o'.
    Considering target file `main.for'.
     Looking for an implicit rule for `main.for'.
     No implicit rule found for `main.for'.
     Finished prerequisites of target file `main.for'.
    No need to remake target `main.for'.
   Finished prerequisites of target file `main.o'.
   Prerequisite `main.for' is older than target `main.o'.
  No need to remake target `main.o'.
  Considering target file `funz.o'.
    Considering target file `funz.for'.
     Looking for an implicit rule for `funz.for'.
     No implicit rule found for `funz.for'.
     Finished prerequisites of target file `funz.for'.
    No need to remake target `funz.for'.
   Finished prerequisites of target file `funz.o'.
   Prerequisite `funz.for' is older than target `funz.o'.
  No need to remake target `funz.o'.
 Finished prerequisites of target file `main'.
 Prerequisite `main.o' is older than target `main'.
 Prerequisite `funz.o' is older than target `main'.
No need to remake target `main'.
make: `main' is up to date.

这是 stat funz.o funz.for; touch funz.for; stat funz.o funz.for; make -rRd

的输出
  File: `funz.o'
  Size: 3176            Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d      Inode: 58197897    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  505/ lorenzo)   Gid: (  505/ lorenzo)
Access: 2015-11-19 16:23:06.200737262 -0500
Modify: 2015-11-19 16:23:06.192737262 -0500
Change: 2015-11-19 16:23:06.192737262 -0500
  File: `funz.for'
  Size: 129             Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d      Inode: 58196947    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  505/ lorenzo)   Gid: (  505/ lorenzo)
Access: 2015-11-19 16:23:06.183737262 -0500
Modify: 2015-11-19 16:23:06.174737262 -0500
Change: 2015-11-19 16:23:06.174737262 -0500
  File: `funz.o'
  Size: 3176            Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d      Inode: 58197897    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  505/ lorenzo)   Gid: (  505/ lorenzo)
Access: 2015-11-19 16:23:06.200737262 -0500
Modify: 2015-11-19 16:23:06.192737262 -0500
Change: 2015-11-19 16:23:06.192737262 -0500
  File: `funz.for'
  Size: 129             Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d      Inode: 58196947    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  505/ lorenzo)   Gid: (  505/ lorenzo)
Access: 2015-11-19 16:23:47.478737151 -0500
Modify: 2015-11-19 16:23:47.478737151 -0500
Change: 2015-11-19 16:23:47.478737151 -0500
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-redhat-linux-gnu
Reading makefiles...
Reading makefile `Makefile'...
Updating makefiles....
 Considering target file `Makefile'.
  Looking for an implicit rule for `Makefile'.
  No implicit rule found for `Makefile'.
  Finished prerequisites of target file `Makefile'.
 No need to remake target `Makefile'.
Updating goal targets....
Considering target file `main'.
  Considering target file `main.o'.
    Considering target file `main.for'.
     Looking for an implicit rule for `main.for'.
     No implicit rule found for `main.for'.
     Finished prerequisites of target file `main.for'.
    No need to remake target `main.for'.
   Finished prerequisites of target file `main.o'.
   Prerequisite `main.for' is older than target `main.o'.
  No need to remake target `main.o'.
  Considering target file `funz.o'.
    Considering target file `funz.for'.
     Looking for an implicit rule for `funz.for'.
     No implicit rule found for `funz.for'.
     Finished prerequisites of target file `funz.for'.
    No need to remake target `funz.for'.
   Finished prerequisites of target file `funz.o'.
   Prerequisite `funz.for' is newer than target `funz.o'.
  Must remake target `funz.o'.
gfortran -g -c funz.for
Putting child 0x0197ea80 (funz.o) PID 69914 on the chain.
Live child 0x0197ea80 (funz.o) PID 69914
Reaping winning child 0x0197ea80 PID 69914
Removing child 0x0197ea80 PID 69914 from chain.
  Successfully remade target file `funz.o'.
 Finished prerequisites of target file `main'.
 Prerequisite `main.o' is older than target `main'.
 Prerequisite `funz.o' is newer than target `main'.
Must remake target `main'.
gfortran -g -o main main.o funz.o
Putting child 0x019830d0 (main) PID 69917 on the chain.
Live child 0x019830d0 (main) PID 69917
Reaping winning child 0x019830d0 PID 69917
Removing child 0x019830d0 PID 69917 from chain.
Successfully remade target file `main'.

更新 2

我注意到一些非常奇怪的事情(我总是忽略):我正在通过 WinSCP 客户端编辑我的源文件,似乎在更新我的源文件之后,"last modified" 时间出错了。正如你在this picture中看到的,即使我在几分钟前修改了funz.for,它最后一次更改的显示时间莫名其妙地比我实际时间早了6个小时(差不多5P.M。在这里)。

似乎我正在使用的远程计算机与本地计算机的时间不同,因此时间戳不同,makefile 不工作。