今天刚刚学习cmake的使用,然后就遇见了问题。
运行cmake命令第一次不成功,接着运行第二次就成功生成Makefile文件。
肯定是哪里出现了问题。
先上一张cmake运行时候的报错图:
去查看CMakeError.log文件,发现报错:“Clock skew detected”
去百度了一下说是由于文件时间比系统时间晚造成的 用date命令查看,果真系统时间还是上个月(我在挂载目录下建立的文件,windows的系统时间是正确的,所以就导致了这个问题)
于是想办法解决,一些博客提供手动修改系统的办法,但是感觉不够自动化,NTP可以帮我们解决这个问题。
首先没有NTP包的可以下载安装。
安装成功后我们还需要配置一下/etc/ntp.conf。(记得加上sudo,不然没有修改的权限!)
sudo vim /etc/ntp.conf
我们使用server命令设定上层NTP服务器
我这里采用阿里云的服务器地址
在最后一行加上:
server ntp1.aliyun.com
如图所示:
查看NTP服务是否启动:
ps -aux | grep ntp
如下显示:
没有启动,可以重启服务:sudo /etc/init.d/ntp restart
查看系统时间:
已经同步网络时间了。
这时候再cmake一次,发现问题依然存在,但是CMakeError.log文件里面的错误变成:
Cannot copy output executable
'/mnt/share/build/CMakeFiles/CMakeTmp/cmTC_dd4b6'
to destination specified by COPY_FILE:
'/mnt/share/build/CMakeFiles/feature_tests.bin'
??!!
stackoverflow里面也有人出现同样的问题,链接:https://stackoverflow.com/questions/64438728/detecting-compiler-abi-failed-by-cmake
指出问题的原因:
The CMAKE is not able to access to file system with permission granted. Solution is to edit /etc/fstab accordingly.
CMAKE无法在授予许可的情况下访问文件系统。解决方法是相应地编辑/ etc / fstab。
让我去改/etc/fstab文件,这显然又是一个对于菜鸟来说巨大的工程量。然而授予权限的方式还有一种最常用的办法,就是sudo 命令。
再次使用命令:
sudo cmake ..
一次运行成功
不容易啊,一个简单的例子终于一次成功了。
今天记录下来,免得大家浪费时间重走我的老路。