make[1]: warning: clock skew detected. your build may be incomplete.-尊龙官方平台

make[1]: warning: clock skew detected. your build may be incomplete.

el/2024/3/25 17:01:09

make[1]: warning: clock skew detected. your build may be incomplete.

其实之前就曾经发现过这个问题,当时没有仔细研究……

今天又一次见到这个问题:

我需要重新编译一个模块,里面有的代码需要替换,我就从邮件里面用别人发给我的代码替换掉了服务器上的代码,然后make,就会报上面的错。

原因:

首先,我从邮件另存为到桌面,这个时候是重新write了一个新文件,也就是说最后修改时间是当前操作时间;

我的win系统和服务器时间有差别,而且是win比较超前,也就是在服务器看来,win已经在“未来”了;

我将win下的文件替换掉服务器上的文件,然后make,make发现这个文件居然是来自未来的….

恩,大概就是这么个意思。

看下中英文两种报错吧($lang):


[test1280@localhost smpinit]$ rz -e
rz waiting to receive.
[test1280@localhost smpinit]$ make
make[1]: entering directory `/home/test1280/cmin02sms/src/smpinit'
make[1]: warning: file `smpinit.c' has modification time 44 s in the future
compiling smpinit.c... ok
……
--->>>>>>>>> make ok <<<<<<<<<---
make[1]: warning:  clock skew detected.  your build may be incomplete.
make[1]: leaving directory `/home/test1280/cmin02sms/src/smpinit'

关键:

make[1]: warning: file `smpinit.c' has modification time 47 s in the future
make[1]: warning:  clock skew detected.  your build may be incomplete.

[test1280@localhost smpinit]$ rz -e
rz waiting to receive.
[test1280@localhost smpinit]$ make
make[1]: entering directory `/home/test1280/cmin02sms/src/smpinit'
make[1]: warning: file `smpinit.c' has modification time 47 s in the future
compiling smpinit.c... ok
……
--->>>>>>>>> make ok <<<<<<<<<---
make[1]: 警告:检测到时钟错误。您的创建可能是不完整的。
make[1]: leaving directory `/home/test1280/cmin02sms/src/smpinit'

关键:

make[1]: warning: file `smpinit.c' has modification time 47 s in the future
make[1]: 警告:检测到时钟错误。您的创建可能是不完整的。

假设:

1.服务器现在的时间戳是10;

2.win的时间戳是100;

3.我在win上创建了一个文件,那modify的时间必然是100(当然,实际是大于100,不考虑这个);

4.将时间戳是100的文件拿到服务器上,然后make,make发现,咦,有个来自未来的文件,这个文件的modify-time是未来的某个时间戳(100),于是给一个警告;

下面是重现一次的过程:

[test1280@localhost smpinit]$ rz -e
rz waiting to receive.
[test1280@localhost smpinit]$ stat smpinit.c 
  file: “smpinit.c”
  size: 21144       blocks: 48         io block: 4096   一般文件
device: fd00h/64768d    inode: 6006035     links: 1
access: (0644/-rw-r--r--)  uid: (  514/test1280)   gid: (  514/test1280)
access: 2017-06-21 13:37:11.000000000  0800
modify: 2017-06-21 13:38:04.000000000  0800
change: 2017-06-21 13:37:11.000000000  0800
[test1280@localhost smpinit]$ date
2017年 06月 21日 星期三 13:37:20 cst
[test1280@localhost smpinit]$ make
make[1]: entering directory `/home/test1280/cmin02sms/src/smpinit'
make[1]: warning: file `smpinit.c' has modification time 41 s in the future
compiling smpinit.c... ok
……
--->>>>>>>>> make ok <<<<<<<<<---
make[1]: 警告:检测到时钟错误。您的创建可能是不完整的。
make[1]: leaving directory `/home/test1280/cmin02sms/src/smpinit'

看到了吧?stat显示文件的modify-time是38分04秒,但是现在时间是37分20秒….

其实这个警告并不会影响什么,该生成可执行文件还是可执行文件(至少我看到的是这样)。

如果不顺眼,可以touch一下嘛:

[test1280@localhost smpinit]$ stat smpinit.c 
  file: “smpinit.c”
  size: 21144       blocks: 48         io block: 4096   一般文件
device: fd00h/64768d    inode: 6006035     links: 1
access: (0644/-rw-r--r--)  uid: (  514/test1280)   gid: (  514/test1280)
access: 2017-06-21 13:39:57.000000000  0800
modify: 2017-06-21 13:40:45.000000000  0800
change: 2017-06-21 13:39:57.000000000  0800
[test1280@localhost smpinit]$ date
2017年 06月 21日 星期三 13:40:05 cst
[test1280@localhost smpinit]$ touch smpinit.c 
[test1280@localhost smpinit]$ stat smpinit.c 
  file: “smpinit.c”
  size: 21144       blocks: 48         io block: 4096   一般文件
device: fd00h/64768d    inode: 6006035     links: 1
access: (0644/-rw-r--r--)  uid: (  514/test1280)   gid: (  514/test1280)
access: 2017-06-21 13:40:10.000000000  0800
modify: 2017-06-21 13:40:10.000000000  0800
change: 2017-06-21 13:40:10.000000000  0800
[test1280@localhost smpinit]$ make
make[1]: entering directory `/home/test1280/cmin02sms/src/smpinit'
compiling smpinit.c... ok
……
--->>>>>>>>> make ok <<<<<<<<<---
make[1]: leaving directory `/home/test1280/cmin02sms/src/smpinit'

另:

find ./ -type f |xargs touch

http://www.ngui.cc/el/5127143.html

相关文章

linux:重定向(redirect)

linux:重定向(redirect) 今天写了个测试的小程序,用到了stdout以及stderr,输出的时候太乱,很难分析,想到了重定向。 1.一个进程运行时,一般打开三个文件:stdin,stdout,stderr; 2.stdin是标准…

linux:进程实例信息(/proc)

linux:进程实例信息(/proc) 问几个问题: 1.怎么知道一个进程对应哪个可执行文件? 2.怎么知道一个进程的资源限制? 3.怎么知道一个进程所处的环境? 4.怎么知道一个进程打开了哪些文件? ………

c/c :调用函数来初始化全局变量

c/c:调用函数来初始化全局变量 实验环境: [jiangeb50 ~]$ uname -a linux eb50 2.6.18-348.el5 #1 smp wed nov 28 21:22:00 est 2012 x86_64 x86_64 x86_64 gnu/linux gcc 版本 4.1.2 20080704 (red hat 4.1.2-54) 先看看c的: #include

常用linux命令:tar

常用linux命令:tar [test1280localhost 20170702]$ uname -a linux localhost.localdomain 2.6.18-371.el5 #1 smp thu sep 5 21:21:44 edt 2013 x86_64 x86_64 x86_64 gnu/linux tar是一个打包工具,但是其有选项可以直接将这个“包”进行压缩…

c/c :string.c_str()

c/c:string.c_str() 今天忽然想起之前的一个小问题: string.c_str()返回值失效的问题。 关于string.c_str()我个人认为,能多快将其拷贝到一个安全的地方,就尽快将其拷贝吧! 题外话:其实例如lua对c的接口中…

aix:struct dirent d_type

aix:struct dirent d_type 今天做一个小功能,实现起来时需要判断一个目录下各个目录项对应的类型: 可能是普通文件类型; 可能是目录类型; 可能是socket类型… #include #include #include …

des加解密原理及实现

des加解密原理及实现 这几天在写加解密相关的api,用来给lua进行调用,其中一个加解密的算法是des,底层是c/c实现的。 当然我不是真的写一个des加解密的实现,而是写一个接口就好。 顺便也了解了下des加解密的相关事项,…

填充模式:pkcs#5/pkcs7

填充模式:pkcs#5/pkcs7 首先我们要了解下啥是填充模式。 在分组加密算法中(例如des),我们首先要将原文进行分组,然后每个分组进行加密,然后组装密文。 其中有一步是分组。 如何分组? 假设我…

linux:静态函数库(.a)与动态函数库(.so)

linux:静态函数库(.a)与动态函数库(.so) 函数库分两种: 1.静态函数库:库程序是直接注入目标程序的,不分彼此,库文件通常以.a结尾; 2.动态函数库:…

linux:多线程不同步导致错误示例

linux:多线程不同步导致错误示例 多个线程都可以看到同一个对象并有对其操作时涉及到同步问题。 不同步现象: counter.h #ifndef _counter_h #define _counter_hclass counter { public:counter();counter(int);virtual ~counter();int getcnt();voi…
网站地图