我们知道, 在协同开发时, 没有特别情况, 不要经常更新自己的编译目录,否则会被各种编译问题困扰, 相信大家都有过血与泪的教训。
最近, 我想在自己编译目录下修改一个文件, 不妨设文件名为test.cpp. 我是在Windows上用samba映射到linux上的。 为了备份一下test.cpp文件, 我直接在Windows上备份了该文件, 文件名为"复件 test.cpp", 然后我修改test.cpp, 然后编译, 然后我就抓狂了。
好好的编译环境, 为什么在test.cpp中增加一行代码, 就错误百出呢? my god. 于是, 我回退了test.cpp的修改, 再次编译, 还是不行。 此时, 加班很晚了, 头也很晕了, 于是想, 难道要make clean一下? 于是就手贱地执行了make clean, 于是就呵呵哒了, 把很多有用的.o文件给清除了, 此时刚好想到, 编译问题是"复件 test.cpp"引起的, 这个文件有两个问题:
1. 文件名中间有空格, 这是linux所不允许的
2. 以cpp结尾, 会被编译
找到了问题, 就好说了,删除备份分拣, 改用linux命令来备份: cp test.cpp test.cpp.bak, 于是make all执行起来, 刷刷刷!
睡觉, 等明早出库!
经验与教训:
禁止在linux编译目录下用Windows方式备份文件;
禁止在linux编译目录备份成以.cpp结尾的文件名;