随笔分类 - 嵌入式学习之基础篇
本阶段记录内容大部分摘自Linux典藏大系之《Linux命令、编辑器与shell编程》
摘要:人机交互程序的交互方式可以是命令行模式,也可以是图形界面。在命令行模式中,负责与用户交互的人机交互程序称为shell(shell这个词中文是“外壳”的意思,它自身的含义就说明了其与Linux内核之间的关系)。shell是一个非常特殊的程序,包含在内核之外,主要作用是将用户输入的命令解释成内核能够识别的指令,然后传递给内核,内核控制硬件执行相关的指令并将结果通过硬件输出。从这个过程可以看出shell主要作用是负责人与内核之间的交互。默认情况下,Linux系统中会安装多个shell,系统中的每个用户都可以使用这些shell。当用户被创建时,系统会为用户指定一个默认的shell,如果没有指定使用何种
阅读全文
摘要:帮助之help命令和选项 1、help命令 help命令是Bash Shell内置的一个很简明的帮助命令。直接使用命令help可以看到人机交互程序Bash Shell的版本号、提供的命令等内容。 将一个命令作为help命令的参数,可以获得该命令的详细帮助 2、help选项 许多命令都提供了一个帮助选项help,利用这个选项可以获得命令的用法、选项等帮助信息。 许多时候用户可能会...
阅读全文
摘要:1、命令的基本格式 几乎所有的Linux命令都具有相似的格式,这个基本格式如下: command [option] [parameter] 从上面的基本格式可以看出,Linux系统中的命令由命令字(command)、选项(option)和参数(parameter)3部分组成。 注意:Linux系统中的命令字同Windows一样,通常是一些可执行文件(有时也存在一些可执行脚本)。与Windo...
阅读全文
摘要:安装登录系统的位置可以将登录方式分为两种:本地登录和远程登录。本地登录可以使用图形界面和命令行模式(也称字符界面)两种方式;远程登录可以使用SSH、Telnent、VNC、SFTP 4种方式。常见的远程登录方式有SSH、Telnet、VNC和SFTP 4种。SSH:SSH(Secure Shell)是一种使用加密技术保护传输数据包的远程登录工具,所有数据包都先经过加密,再进行传输。由于SSH是一种安全性非常高的远程登录工具,因此SSH也是Linux系统中使用最广泛的远程登录方式。Telnet:Telnet是一个传统的交互式登录工具。与SSH不同的是,Telnet并没有使用加密技术,所有内容都通
阅读全文
摘要:准备源文件如下:/*test.c*/#include #include "phello.h"#include "pword.h"intmain (){ phello (); pword (); return 0;}/*phello.c*/#include#include "phello.h"intphello (){ printf ("hello\n");}/*pword.c*/#include #include "pword.h"intpword (){ printf ("word\
阅读全文
摘要:掌握Makefile的使用方法和工作流程;掌握make工具变量的相关知识,包括其引用、定义及分类等;掌握Makefile常见的函数含义;掌握Makefile与shell命令行的通信方法;掌握Makefile的常见语法规则,包括显式规则、隐式规则及静态模式规则;了解autotools的用法,了解autotools中常用的工具链以及如何使用工具链自动创建Makefile文件。1、Make工具概述 Makefile带来的好处就是“自动化编译”,一旦写好,只需要在shell命令行中输入一个make命令,整个工程完全自动编译,可以极大提高软件开发的效率。 make是一个命令工具,它解释Makefil..
阅读全文
摘要:1、设置环境变量 用户可以在GDB的调试环境中定义自己需要的变量,用来保存一些调试程序中的运行数据。要定义一个GDB的变量很简单,只需使用GDB的set命令。 GDB的环境变量和Linux一样,也是以$起头。如: (gdb)set $foo=xxx 使用环境变量时,GDB会在第一次使用时创建这个变量,而在以后的使用中,则直接对其赋值。环境变量没有类型,可以给环境变量定义任意的类型,包括结构体和数组。如果要查看当前的所有环境变量,可以输入: (gdb)show convenience 正是由于环境变量和程序变量可以相互使用,使得程序调试更为灵活便捷。例如: (gdb)set $i=...
阅读全文
摘要:1、GDB调试器概述 GDB是GNU开源组织发布的一个强大的程序调试工具,具有查看程序运行状态、设置断点、查看表达式、显示变量等众多功能,是程序员进行Linux编程必须要掌握的一种调试技术。 GDB调试工具的优势主要包含以下5个方面: (1)用户可以在程序运行过程中查看运行的状态; (2)用户可以在程序中任何需要的地方设置断点,并暂停程序的执行; (3)当程序暂停时,用户可以随时查看程序中各表达式、变量值以及内存值; (4)程序暂停时用户可以进行单步调试,依此检查程序每步运行的结果是否跟预测值一致,并且可以检查每步出现的错误; (5)用户可以改变程序中的变量或者执行顺序,来验证程...
阅读全文
摘要:静态库的制作步骤: (1)gcc -c mylib.c -o mylib.o (2)ar rc libmylib.a mylib.o 动态库的制作步骤: gcc -shared mylib.c -o libmylib.so 如何判断某个可执行二进制文件含有什么动态解析函数库?用ldd就可以知道。例如:想要知道/usr/bin/passwd这个程序含有的动态函数库有哪些,可以这样做:#ldd /usr/bin/passwd 将动态函数库加载到高速缓存当中:(1)在/etc/ld.so.conf里面写下想要读入高速缓存当中的动态函数库所在的目录 #vim /etc/ld.so...
阅读全文
摘要:gprof是GNU组织下的一个比较有用的性能测试功能: 主要功能: 找出应用程序中消耗CPU时间最多的函数; 产生程序运行时的函数调用关系、调用次数 基本原理: 首先用户要使用gprof工具,必须在GCC编译该文件的选项中添加-pg选项,然后GCC会在用户应用程序的每一个函数中加入一个名为mcount(或者是_mcount、__mcount,这依赖于编译器或操作系统)的函数,即应用程序中每一个函数都要调用mcount函数,而mcount函数使用后会在内存中保存函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址,这张调用图也保存了所有与函数调用相关的调用时间、调用次数...
阅读全文
摘要:login shell:取得bash时需要完整的登录流程non-login shell:取得bash接口的方法不需要重复登录,举例来说,你以x window登录Linux后,再以x的图形界面启动终端机,此时那个终端接口并没有需要再次输入账号与密码,那个bash的环境就称为non-login shell。你在原本的bash环境下再次执行bash命令,同样也没有输入账号密码,那第二个bash(子进程)也是non-login shell。login shell 和 non-login shell 读取的配置文件数据并不一致。login shell 其实只会读取以下两个配置文件:(1)/etc/pro
阅读全文
摘要:当我们执行一个命令时,系统会依据PATH的设置去PATH定义的每个目录下查寻该命令的可执行文件,如果在PATH定义的目录中含有多个文件名为我们要执行的命令的可执行文件时,那么先查询到的同名命令先被执行。 #echo $PATH 查看PATH定义了哪些目录 PATH(一定是大写),这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)隔开,每个目录是有顺序之分的。 #PATH=$PATH:/root 将/root加入PATH当中 不通身份用户默认的PATH不同,默认能够随意执行的命令也不同 PATH是可以修改的 使用绝对路径或相对路径直接指定某个命令的文件名来执行,会比...
阅读全文
摘要:脚本文件名(命令)的查询: 外部命令(非bash所提供的命令)的查询:#which name (which默认情况下是查找PATH内所规范的目录) 内置在bash中的命令的查询:#type name文件名的查找: 通常是先使用whereis或者是locate来查找,如果真的找不到了,才以find来查找。因为whereis与locate是利用数据库来查找,相当快速;而find要查询硬盘,速度慢。 如果要使搜索到的结果更加准确,可以先手动更新数据库,手动更新数据库命令:#updatedb #whereis [-bmsu] 文件名或目录名 #locate [-ir] keyword ...
阅读全文
摘要:重点掌握以下知识点: 了解gcc编译器的下载和安装方法,包括嵌入式交叉编译平台搭建的方法 重点掌握gcc的基本编译流程和编译方法 重点掌握gcc编译的高级操作及选项 了解gcc编译器性能分析工具,包括gprof和gcovgcc下载地址:ftp://ftp.gnu.org/gnu/gcc/安装过程中遇到的问题: #./configure --help 查看可用的参数 一般来说configure较重要的就是那个--prefix=/path了,--prefix后面接的路径表示这个软件将来要安装到那个目录去,如果你没有指定--prefix=/path这个参数,通常默认参数就是/usr/l...
阅读全文
摘要:用户可以进入某目录成为“可工作目录”的基本权限: 可使用的命令:例如cd等切换工作目录的命令 目录所需权限:用户对这个目录至少需要具有x的权限 额外需求: 如果用户想要在这个目录内利用ls查阅文件名,则用户对此目录还需要r的权限用户在某个目录内读取一个文件的基本权限: 可使用的命令:例如cat、more、less等 目录所需权限:用户对这个目录至少需要具有x的权限 文件所需权限:用户对文件至少需要有r的权限用户可以修改一个文件的基本权限: 可使用的命令:例如nano、vi等 目录所需权限:用户在该文件所在的目录至少要有x的权限 文件所需权限:用户对该文件至少要有r,w权限用...
阅读全文
摘要:防火墙技术总体来讲可以分为:包过滤防火墙和代理服务器两种类型。Linux平台下的包过滤防火墙:netfilter/iptables (免费,官方网站http://www.netfilter.org/)netfilter/iptables包过滤防火墙由两个组件构成:一个是netfilter,一个是iptablesiptables基础: 规则(rules):就是网络管理员预定义的条件,规则一般的定义为“如果数据包符合这样的条件,就这样处理这个数据包”。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如飞放行(accept)、拒绝(reject)和丢弃(drop)...
阅读全文
摘要:网络设置:使用ifconfig查看网络接口信息:#ifconfig 查看所有活动的网络接口#ifconfig -a 查看所有网络接口(包括非活动的)#ip address show 查看网络接口的ip地址使用ifconfig配置网络接口格式如下:#ifconfig eth0 netmask [up|down]#ifconfig eth0 [up|down]使用ifconfig命令只能临时修改网络接口的设置,系统重新启动后,这些设置将会丢失。网络接口配置文件:/etc/sysconfig/network-scripts/目录中 按网络接口名称不...
阅读全文
摘要:分区: 为何分区? 1、数据安全性的考虑 2、系统的性能考虑 安装Linux时如何分区? 最少分区方法: (1) / 足够大,一般要求大于5GB (2) swap 物理内存2倍 建议:预留一个备用的剩余磁盘容量。 简单的分区方法: (1) / (2) /boot 100MB (3) swap 通常的分区方法: (1)分析主机未来用途; (2)根据用途分析需要较大容量的目录,以及读写较为频繁的目录; (3)将较大容量、读写频繁的目录独立出来不与根目录放在一起。 通常情况下,比较符合大容量且(或)读写频繁的目录有: (1) / (2) ...
阅读全文
摘要:安装完VMware Workstation后会自动生成两个网络连接:VMware Network Adapter VMnet8 和 VMware Network Adapter VMnet1(通常称为VMnet8和VMnet1)。虚拟机的网络连接都与这两个连接紧密相关,因此必须保持这两个连接可用,并且不要随意修改这两个连接。1、NAT方式:默认VMnet8 虚拟机网络作为宿主机的内部网络,宿主机使用的网络为外部网络,外部网络的主机无法访问虚拟机 虚拟机宿主机 可以互通 虚拟机--->互联网 可以访问 其他主机--->虚拟机 不可访问2、桥接方式:默认VMnet0 虚拟机相当于跟宿.
阅读全文
摘要:简单地说,系统为了某些功能必须要提供一些服务(不论是系统本身还是网络方面),这个服务就称为service。而实现这个service的程序我们就称它为daemon。实现某个服务是需要一个daemon在后台中运行,没有这个daemon就不会有service。 依据daemon的启动与管理方式来区分,基本上,可以将daemon分为可独立启动的stand alone,与通过一个super daemon(早期是inetd,后来被xinetd替代)来统一管理的服务这两大类。 stand alone:daemon启动并加载到内存后一直占用内存和系统资源。响应速度较快。 super daemon统一...
阅读全文