[TOC]

​ 本文记录linux的一些基础知识。

一、Linux的常见目录


/: Linux根目录。
	/home:存放主目录的家目录。命令行中切换到根目录:“cd /home
		/~:存放用户文件的主目录。命令行中切换到主目录:“cd /home/用户名”或者“cd ~
    /root:系统管理员的目录。
	/bin:存放可执行二进制文件的二进制目录,如常用的命令lstarmv,cat
    /sbin:存放系统管理员使用的二进制命令的目录。
	/boot:存放系统启动时用到的引导文件的引导目录。
        /boot/grub:系统引导管理器
        /boot/vmlinuz:Linux的内核文件
	/dev:设备目录。存放系统的设备文件。
	/etc:系统配置文件存放的目录。
	/lib:系统使用的函数库的目录。
    /srv:服务启动用之后需要访问的数据文件。
    /usr:应用程序存放目录。
        /usr/bin:存放应用程序
        /usr/share:存放共享数据
        /usr/lib:存放程序运行的函数库文件。
        /usr/local:存放软件升级包。
    /sys:系统文件存放目录
    /var:系统执行过程中产生的动态目录。
    /tmp:程序执行的临时文件存放目录。
	/lost+found:系统异常产生错误时,将一些遗失片段放置于该目录下。
        
    

二、Linux的命令解释器

​ 命令解释器比图形界面执行要快。Linux系统提供了多种命令解释器,如shell(/bin/sh),如bash(/bin/bash)。其中Bash解释器就是Linux中终端默认的命令解释器

1、Bash解释器常用快捷键

Tab键:补齐命令、补齐路径、显示当前目录下的所有目录(按两下)
Ctrl+L:清屏,等价于输入“clear”。
Ctrl+C:中断进程,将当前正在运行的命令中断。
遍历历史命令:ctrl+p(向上),ctrl+n(向下)
移动光标命令:
    光标左移:ctrl+b(向左)
    光标右移:ctrl+f(向右)
    移动到头部:ctrl+a(home)
    移动到尾部:ctrl+e(end)

2、Linux命令格式

command [-option][pararmeter]

查看内建命令和外部命令的区别

type -a 命令

三、Linux的文本编辑器

Linux下的纯文本编辑器gedit,等价于windows中的记事本。

vi是linux中最常用的文本编辑器,是所有linux程序都自带的文本编辑器,其工作在字符模式下。

vim是vi的升级版,兼容vi的所有指令。

1、vim的是工作模式

vim有三种基本工作模式:命令模式、编辑模式、末行模式

相关命令:

$ vim //进入vim的命令模式
//输入i进入vim的编辑模式,此时可以编辑文本
//输入:进入vim的末行模式,此时可以输入编辑器命令  
//退出vim则输入:q

四、Linux的GCC编译器

​ Linux的GCC编译器(GNU Cimpiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器,现已被大多数类UNIX操作系统(如Linux、BSD、Max OS X等)采纳为标准编译器,同样存在Windows版本的GCC编译器。GCC最初用于编译C语言,现在已经能够编译C、C++、Java、Go等主流语言。

​ 查看GCC版本:gcc -V / –version

1、GCC的工作流程

​ GCC编译器的编译命令:

常见编译格式:
gcc hello.c -o hello //将hello.c编译为为hello.out
gcc -g hello.c -o hello //将hello.c编译为为hello.out,包含调试信息
等价于四步编译指令:
gcc -E hello.c -o hello.i //将hello.c预处理为hello.i
gcc -S hello.i -o hello.s //将hello.i编译为hello.s(汇编文件)
gcc -c hello.s -o hello.o //将hello.s汇编为hello.o(二进制文件)
gcc hello.o -o hello      //将hello.o链接为hello.out(linux的可执行文件)
其他编译指令:
gcc -On
gcc -Wall hello.c//显示所有警告信息
gcc -Wall -Werror hello.c //将所有警告信息当作错误处理
gcc hello.c -DDEBUG //编译时定义宏(-D后跟着DEBUG)

​ GCC的工作流程:

2、静态链接库和动态链接库

​ 在为客户提供软件服务时,有时候不能提供自己的核心代码,这时候就可以将自己的核心代码做成链接库的形式。链接库分为静态链接库和动态链接库。

​ 静态链接库(.lib)在GCC编译时执行静态链接到最后的可执行文件(.out),其优点是兼容性高,对环境依赖性低;缺点是最终生成的可执行文件(.out)会变大,当库函数更新时,需要重新编译整个应用程序。

​ 动态链接库(.ddl)在程序运行时才将所需资源调入可执行程序,其优点是可以降低可执行文件(.out)的大小,多个应用程序间可以共享东一个动态链接库;缺点是缺少动态库则不能独立运行,对版本依赖严重

四、Linux的GDB调试器

1、生成调试信息

gcc -g hello.c -o hello

g++ -g hello.cpp -o hello

2、启动GDB

启动GDB:gdb hello.out (hello就是你的执行文件)

设置运行时参数:set args 10 20 30 40

查看运行时参数:show args

启动程序:run start

四、Linux的项目编译工具

​ 一个项目目录中一般存在多个源文件(.c/.cpp)和相关目录,不同文件之间的编译顺序也不相同。Linux提供了Makefile作为项目自动化编译的工具。make是一个命令工具。

​ Makefile文件的命名规则:推荐使用Makefile

​ make的工具的安装:sudo apt install make. Makefile基本规则三要素: