编写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

编写makefile时注意事项,布布扣,bubuko.com

时间: 2024-12-14 18:14:12

编写makefile时注意事项的相关文章

编写协议时注意事项

1,在使用协议向后台交互时,有时所要用到的协议是需要传入参数的,如已经获得的数据, 下面的方法时定义在PrisonView文件中的,而PrisonItem是PrisonView里的单个条目 private this._currentSelect:view.PrisonItem; //单个条目 private clickFree(evt:egret.TouchEvent) { if(!this._currentSelect) { return; } var data:model.PrisonHer

如何编写Makefile?

//swap.c #include<stdio.h> int swap(int *x,int *y) {printf("a=%d b=%d\n",*x,*y); int z; z=*x; *x=*y; *y=z; printf("a=%d b=%d\n",*x,*y); } //max.c int max(int a,int b) { return a>b?a:b; } //test.c int main() { int x=3,y=4; prin

Linux下编写 makefile 详细教程

原文地址:https://www.cnblogs.com/mfryf/p/3305778.html 还有一篇也不错:http://wiki.ubuntu.org.cn/跟我一起写Makefile:MakeFile介绍 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出来,方便学习. 后记,看完发现这篇文章和<Linux环境下的C编程指南>的mak

简单编写Makefile

相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云.在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide.其实makefile并没有想象的那么难写,只要你明白了其中的原理,自己实践几次.你也可以自己写makefile,让别人对你头来羡慕的目光. 下面本人介绍一下自己的学习成果,初学阶段,欢迎大家多多指正.简单的说,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至可以在m

Linux 程序设计学习笔记----动手编写makefile文件

Befroe Beginning. 之前定了暑假的plan ,关于Linux的书籍现在在看的是ALP和Linux高级程序设计(杨宗德)第三版.在计划中的是Linux高级环境编程. 现在开始关于Linux程序设计的第一篇学习笔记. 本来打算把名字写成教程,不过觉得自己完全是新手在自学,还是写学习笔记比较负责和适合. 希望可以一起学习进步. 引入 首先我们假设这样一个场景.我们有一个程序包含了三个文件,分别是源码文件main_plus,c和function_plus.c以及头文件mydefine_p

(备忘)vs2010编写动态链接库时导出函数的函数名问题及加载方式

在vs2010中使用.def文件导出函数时,仅仅添加.def文件是不够的,还要在 项目属性 -> 链接器 -> 输入 -> 模块定义文件 中添加自定义的.def文件名. (前提:导入导出都在头文件和源文件中定义好了) ##:静态加载动态链接库 将链接库的 头文件..lib文件 和 .dll 文件拷贝到工程目录下 然后#include 头文件,#pragma comment(lib,"**.lib") 最后直接在需要使用dll函数的地方使用函数就行 ##:动态加载动态链

从零开始攻略PHP(6)——代码重用与函数编写的一些注意事项

一个新的项目是这样创建的:它将已有的可重新利用的组件进行组合,并将新的开发难度降低到最小. 代码重用的好处:降低成本.提升可靠性和一致性. 1.使用require()和include()函数 使用一条require()或include()语句,可以将一个文件载入到PHP脚本中. require()和include()几乎相同.区别是函数失败后,require()函数将给出一个报错.Include()给的则是警告. 变体函数分别是require_once()和include_once().作用是确

编写SQL时PHP开发人员所犯的5个常见错误

本文和大家分享的主要是编写SQL时PHP开发人员常犯的一些错误,一起来看看吧,希望对大家学习php有所帮助. 杜绝使用MySQL API的旧版本 使用PHP开发时有好几种方法可以连接MySQL数据库.最常见的是MySQL API.MySQLi API和PDO API(PHP数据对象).与MySQL API旧版本相比,后面两种方法支持更多的功能,并且更加安全.如果你使用的是旧的"mysql_"函数,那么你应该马上放下手上的工作,然后开始学习新的PDO API.这些旧的 mysql函数被弃

编写Shader时的一些性能考虑

编写shader时的一些建议:1.只计算需要计算的东西:2.通常,需要渲染的像素比顶点数多,而顶点数又比物体数多很多.所以如果可以,尽量将运算从PS移到VS,或直接通过script来设置某些固定值:3.在使用Surface Shader时,可以通过一些指令让shader优化很多. 通常情况下,Surface shader的很多默认选项都是开启的,以适应大多数情况,但是很多时候,你可以关闭其中的一些选项,从而让你的shader运行的更快: (1) approxview 对于使用了view dire