Linux复习资料
Linux的考点基本围绕虚拟机和开发板上的操作
(以虚拟机ubuntu为示例)
Linux创始人是芬兰人Linus Torvalds
-
使用ifconfig和route命令设置网络地址
使用ifconfig命令设置网卡的IP地址和掩码
ifconfig eth0 192.168.43.52 netmask 255.255.255.0
下面命令用于设置默认路由
route add default gw 192.168.43.254 -
在ununtu中进入root管理员模式
sudo su root管理员的符号是#,普通用户是$
-
linux常用命令
命令 | 用途说明 |
---|---|
pwd | 显示用户当前完整的工作目录 |
su | 更改登录用户,默认为root(管理员) |
cd | 进入桌面 |
cp | 将一个文件拷贝到另一个位置,原文件不变 |
ifconfig | 查看和设置本机IP地址和掩码 |
ps | 查看当前运行的所有进程 |
chmod | 修改文件或目录的权限 |
uname | 用于打印当前系统(内核版本号,硬件架构,主机名称和操作系统类型等信息) |
uname-r | 查看内核版本号 |
-
SSH协议连接到其他主机
SSH协议是安全登录协议,对用户名和密码进行了加密,telnet也可以远程登录,但telnet采用明文传输用户名和密码,它们都使用的是TCP协议。 -
GCC是一个以命令行形式操作的编译工具
编译命令:gcc xxx.c -o xxx下表列出GCC工具的常用参数开关和作用
参数开关 | 作用 |
---|---|
o | 指定生成的输出文件 |
E | 仅执行编译预处理 |
S | 将C代码转换为汇编代码 |
wall | 显示警告信息 |
c | 仅执行编译操作,不进行连接操作 |
g | 为gdb调试工具工具产生符号信息,调试程序用 |
v | gcc执行时执行的详细过程,gcc及其相关程序的版本号 |
x | 指定文件使用的编程语言,如gcc -x c hello.pig |
lpthread | 支持线程代码,如gcc -o pt pthread.c -lpthread |
-
*GDB是UNIX和Linux平台下字符界面的调试工具,可以用它在linux上调试C和C++程序
它提供了以下的功能:
1 在程序中设置断点,当程序运行到断点处暂停
2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显示出来
3 单步执行
4 运行时修改变量的值
5 跟踪路径
6 线程切换
要使用GDB对源代码进行调试,在使用GCC工具编译时需加上-g开关。 -
make编译
①标签(Label)(示例)
cacu:add_int.o add_float.o main.o
②#编译命令 gcc(add/目录)
gcc -o cacu add/add_int.o add/add_float.o main.o
③#生成add_int.o的规则,[目标:依赖]
add_int.o:add/add_int.c add/add.h
8.抓包工具wireshark
在上面的抓包截图中,Protocol指示该层协议的名称为TCP,Source Port指示源端口值为80,Destination Port指示目标端口值为36240,source源IP地址为63.245.213.196,destination目标IP地址为192.168.43.196。
9.网络协议
网络协议分层与对应工作的硬件设备。
物理层:网卡、网线、中继器、集线器
链路层:网桥
链路层:交换机
网络层:路由器
10.Linux平台TCP实现多连接的四种典型方式包括:
①多进程方式;②多线程方式;③select方式;④epoll方式。
Linux平台支持并发TCP连接的服务器模式有多进程,多线程,基本select的I/O复用,epoll模式,其中epoll模式是性能最好的。
UDP连接:常用的无连接的网络协议,SNMP网络管理的协议就是基于UDP的应用层协议。
udp数据发送和接收
TCP客户端主要使用的方法有socket,connect,send,receive,shutdown,close。
TCP服务端主要使用的方法有socket,bind,listen,accept,send,receive,shutdown,close。
TCP和UDP是传输层最典型的两种协议,它们的区别可概述如下:
a.TCP与UDP都是传输层的协议。
b.TCP面向字节流的传输层协议,UDP面向数据报的传输层协议。
c.TCP是可靠的传输,UDP会丢包,是不可靠的传输。
d.TCP常用于文件传输,UDP协议常用于语音、视频等数据的传输。
11.Linux中Socket函数说明与使用
函数名 | 说明 |
---|---|
socket | 创建一个socket文件资源[TCP、UDP和RawSock],用于通讯[UDP和TCP 意义不一样]。 |
bind | 绑定本机IP地址和端口。[UDP和TCP使用意义不一样] |
listen | 开始执行监听。[仅限TCP] |
accept | [仅限TCP]服务端收到客户端连接请求后,创建一个新的用于数据通讯的socket文件资源,不同于监听的socket资源,无连接请求则该方法阻塞。 |
connect | 客户端向服务端主动发起连接。(实现三次握手) |
send | 向目标主机发送字节序列[限TCP] |
recv | 接收网络发来的字节序列[限TCP],函数返回值是实际收到的字节个数,如果对方使用了shutdown方法,则该方法返回值为0,对方无动作,则该方法阻塞。 |
recvfrom | 接收网络发来的字节序列[限UDP] |
sendto | 向目标主机发送字节序列**[限UDP]** |
shutdown | 断开socket的TCP连接[限TCP,但并没有清 |
close方法实现关闭文件资源
12.Linux中的Qt开发
信号与槽的连接是通过 QObject 的 connect() 成员函数来实现的。
Qt程序在PC平台的编译过程如下:
1.qmake -project 生成项目文件;
2.qmake 生成Makefile文件;
3.make 根据Makefile文件对项目执行编译,编译工具是g++;
(在arm上)在配置好交叉编译环境的ubuntu12系统中,假设有一个名为hello.cpp的QT程序,使其在smart210开发板上运行的编译命令和操作步骤。
1.qmake-arm –project 生成hello.pro文件
2.qmake-arm 生成Makefile文件
3.make编译生成或执行文件hello
4.使用rz命令通过串口线将程序拷贝到smart210开发板上
5.chmod a+x hello 给hello程序添加运行属生
6./hello –qws命令运行程序。
13.Linux中的线程创建
1.线程创建函数pthread_create
2.等待另一线程结束函数pthread_join
3.线程分离函数pthread_detach
4.线程自我结束函数pthread_exit
在虚拟机上创建线程程序时要使用-lpthread命令,如:gcc -o hello hello.c -lpthread
14.无名信号量
linux中使用无名(匿名)信号量的方法如下:
方法名称 | 方法说明 |
---|---|
sem_init | 创建信号量变量,value是信号量的初值 |
sem_post | 信号量值增加1,OS激活其它等待该信号量的线程 |
sem_wait | 为0时将调用该方法的线程被OS阻塞,大于0信号量值减少1,线程继续 |
sem_destroy | 销毁信号量 |
题外话
以上就是学习Linux中比较多的而且也运用多的知识点了,掌握了他们,去编写程序读懂程序就没那么难了,像程序分析这些就只能靠个人理解了,也可以多去问问老师,网上也有很多学习文档,会加深自己的理解与掌握。