linux命令与makefile学习
- 文件权限
- 通配符*
- 常用命令
- makefile
- gcc与g++区别:
Linux上有一句话:一切皆文件
普通文件 “-”
目录文件 “d” (directory)
管道文件 “p” (piping)
链接文件“l” (link)
文件权限
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。
从左至右用 0-9 这些数字来表示。
第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。
Linux 命令大全 | 菜鸟教程 (runoob.com)
通配符*
常用命令
pwd | |
---|---|
clear或者ctrl+l | 清屏 |
cat | 显示文件里面的内容 |
mkdir | 创建文件夹 |
find -name | 查找文件 |
cp | 拷贝 |
mv | 移动/同一级目录也可以通过该命令来改名字 |
file | 查看文件的实际类型 |
sudo | 让普通用户执行管理员权限 |
ifconfig | linux中用于显示或配置网络设备 |
vi | linux系统中常用的文本编辑器 进入后i 表示插入可以开始写东西,esc表示停止,ZZ(大写表示保存退出) :wq退出保存,:q!退出不保存 |
编译 | gcc a.c -o hello 将a.c进行编译成中间文件 |
运行 | 当前路径./ 编译好的文件 其他路径/ 编译好的文件 |
sudo | sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具 |
xshell远程登入
xftp文件传输
makefile
gcc与g++区别:
gcc是GCC中的GUNC Compiler(C 编译器)
g++是GCC中的GUN C++ Compiler(C++编译器)
更准确的说法是:gcc调用了Ccompiler,而g++调用了C++ compiler
gcc和g++的主要区别
-
对于 .c和.cpp文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的); g++则统一当做cpp文件编译
-
使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL,在用gcc编译c++文件时,为了能够使用STL,需要加参数 –lstdc++ ,但这并不代表 gcc –lstdc++ 和 g++等价
-
gcc在编译C文件时,可使用的预定义宏是比较少的
-
gcc在编译cpp文件时/g++在编译c文件和cpp文件时(这时候gcc和g++调用的都是cpp文件的编译器),会加入一些额外的宏,这些宏如下:
#define__GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define GNUG 4
#define __EXCEPTIONS 1
#define private_extern extern
@表示makefile取消相关信息的回显
#表示makefile文件中的注释
一些命令
一、-g
-g可执行程序包含调试信息
-g为了调试用的
加个-g 是为了gdb 用,不然gdb用不到
二、-o
-o指定输出文件名
-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
一般语法:
gcc filename.c -o filename
上面的意思是如果你不打 -o filename(直接gcc filename.c )
那么默认就是输出a.out.这个-o就是用来控制输出文件的。 ------用./a.out执行文件
三、-c
-c 只编译不链接
产生.o文件,就是obj文件,不产生执行文件
四、-D
其意义是添加宏定义,这个很有用。
当你想要通过宏控制你的程序,不必傻乎乎的在程序里定义,然后需要哪个版本,去修改宏。
只需要在执行gcc的时候,指定-D,后面跟宏的名称即可。
示例:
gcc test.c -o test -D OPEN_PRINTF_DEBUG
或者gcc test.c -o test -DOPEN_PRINTF_DEBUG
两者都是可以的。
五、-w
-w的意思是关闭编译时的警告,也就是编译后不显示任何warning,因为有时在编译之后编译器会显示一些例如数据转换之类的警告,这些警告是我们平时可以忽略的。
六、-W和-Wall
-W选项类似-Wall,会显示警告,但是只显示编译器认为会出现错误的警告。
-Wall选项意思是编译后显示所有警告
七、-O3
-O是大写字母O,不是数字0哦。
意思是开启编译优化,等级为三