首页 > 代码库 > 编写makefile时注意事项

编写makefile时注意事项

CFLAGS=-Wall -g  这个-Wall开头字母一定要大写。这种小错误会导致不能编译!

其次就是在一个目录下面的应该是文件 ,而不能在继续用文件去进行编写代码,因为make寻找当前目录下的makefile,makefile里面用到的文件而不是目录里的代码,如果需要也要通过-l(l链接link)一下。所以再一个目录下,编写文件尽量用vi命令,而不是mkdir。这两个区别要搞清楚。文件与目录还是有区别的。

linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录

vi filename :打开或新建文件,并将光标置于第一行首 

rm   -r  目录可以进行删除目录文件。

cat主要有三大功能:
1.一次显示整个文件。$ cat filename
2.从键盘创建一个文件。$ cat > filename  
   只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件: $cat file1 file2 > file
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3
 
test.txt文件扔进垃圾箱,赋空值test.txt
cat /dev/null > /etc/test.txt  

Linux中文件类型只有以下这几种:
1.-,普通文件。
2.d,目录文件,d是directory的简写。
3.l,软连接文件,亦称符号链接文件,s是soft或者symbolic的简写。
4.b,块文件,是设备文件的一种(还有另一种),b是block的简写。
5.c,字符文件,也是设备文件的一种(这就是第二种),c是character的文件。
Linux系统最原始的也只有这五种,所以第0位,只能是以上五者之一。
那么你会有疑问,
1.MP3文件是是哪种?答案:普通文件。
2.二进制文件是哪种?答案:普通文件。
3.文本文件是哪种?答案:普通文件。
4.为什么硬连接没有类型表示?答案:硬连接和软连接,名字上虽然只差一个字,本质完全不同,硬连接也是文件。其类型是普通文件。


为什么上面要说这么多呢?目的是为下文做知识铺垫。


那么 123-456-789 都好说,了解这块儿的人都知道,他们只是 用户-属组-其他 这三组之间的区别,我们拿其中任意一组作为例子来讲解rwx皆可。
r:read,w:write,x:execute。

体现在命令上:(话说这才是最实际的表象)
======
对于普通文件来说,rwx的意义是:
r:可以获得这个普通文件的名字和内容。
w:可以修改这个文件的内容和文件名。可以删除该文件,但是用户会得到是否删除写保护文件的prompt。
x:该文件是否具有被执行的权限。
======
对于目录文件来说,rwx的意义是:
r-x:可以进入cd该目录,可以获得该目录下存储情况,但是不能修改这个目录内部存储的文件(目录)的名字,也不能在该目录下新建文件和目录
-wx:可以进入cd该目录,但是看不到该目录下的存储情况(ls不可用),可以往该目录下添加、修改、删除文件。可以通过cat来读取该目录下的文件or目录的内容,由于得不到该目录下存储了那些文件,在不知情的情况下只能通过猜,cat + 文件名获得文件内容,所以这样依然不保密。
--x:可以进入cd该目录,看不到存储情况,也不能往该目录下添加、修改、删除文件。但是依然可以通过cat + xx(猜)来获得该目录下的文件的内容。
rw-:不能进入cd该目录,用ls仅仅可以获得文件名和目录名,因为获取不到这些文件的inode号,当然也不能获得该目录下的文件的内容。不能往该目录下添加、修改、删除文件。
======



最后总结一下吧:
1.目录文件虽然是文件(唉,谁叫Linux的核心理念就是Everything is file),但是存储内容的只是一张表而已,关于文件名和inode号的映射关系。
2.文件的扩展名和文件类型之间,没一毛钱关系。
3.文件的文件名和文件实际存储内容之间,没一毛钱关系。
4.要知道如何查找到一个文件内容的过程。
5.为什么同一个文件系统移动文件要比跨文件系统快?
答:因为只需要修改某个目录中路径和inode对应关系即可,不需要重新写一遍数据域。
6.什么是买来的500G的硬盘,格式化完后总是少了达不到500G?
答:从本文可知,inode-table也是需要占用存储空间的,所以缺少的一部分中inode-table占用了不少。
7.我不想吃亏,那么我要如何了解Linux文件系统和inode的相关知识,能否推荐个文章?
答:http://www.cyberciti.biz/tips/understanding-unixlinux-filesystem-inodes.html