linux系统学习笔记
- 格式:docx
- 大小:18.41 KB
- 文档页数:17
Linux学习笔记之(五)为普通⽤户赋予root权限1、使⽤普通⽤户⾝份登录之后,尝试使⽤ sudo ⽅式查看 root 能查看到的⽂件不成功
从上⾯的命令可以看出信息如下:
envoy普通⽤户属于envoy⽤户组
通过 su envoy ⽆密码切换到了 envoy ⽤户
直接查看 /etc/sudoers ⽂件提⽰没有权限
使⽤ sudo 查看 /etc/sudoers 也没有权限,即使输⼊了 root 帐户的密码
2、为普通⽤户赋予 root 账号权限
⽅法⼀:
# 需要给 sudoers 更改权限,否则⽆法修改
# 在 sudoers ⽂件中增加如下红⾊⽂字,其中 NOPASSWD表⽰使⽤ sudo 以root⾝份执⾏命令的时候不需要再次输⼊密码
envoy ALL=(ALL) NOPASSWD:ALL
# 修改完⽂件之后,需要将权限恢复
# 从 root ⽤户切换到 envoy⽤户
下⾯尝试修改⽂件 /etc/sudoers 时,不加上 NOPASSWD 效果如何:
显然⼀直要求输⼊密码,但是输⼊ root 的密码,还是提⽰密码错误。
⽅法⼆:
不修改 /etc/sudoers,直接将普通⽤户加⼊到 root ⽤户组。
linux笔记全(⽆图版)1、ls 查看当前⽬录下的所有内容⿊⾊的是⽂件,蓝⾊的是⽂件夹,也就是⽬录2、rm -f anaconda-ks. cfg 彻底删除⽂件(如不确定,则需要先保存备份,也就是快照)3、ifconfig 查看⽹卡的配置信息(ip地址等)4、ifconfig ens33 192.168.18. 201 /24(⽹络地址/⼦⽹掩码)更改ip地址5、systemctl restart network 重启⽹络服务6、桥接模式,直接可以进⾏通信(同⼀⽹段,配置ip)7、能不能通信的2个条件:在同⼀个物理⽹络内,ip地址也在同⼀⽹段内8、仅主机模式,虚拟机和物理机不能进⾏通信,相当于虚拟机和物理机进⾏了隔离与笔记本(真机)通信截图9、NAT模式,⾃动分配⽹络地址和⽹关,以及dns,可以直接上⽹可以访问互联⽹内的主机,但互联⽹内的主机不能访问本机(max特点)10、route -n 查看⽹关11、cat /etc/resolv. conf 查看dns(注意cat后⾯有⼀个空格,空格不可少)12、验证nat模式可以直接上⽹13、shell:通常指linux的字符界⾯,图形界⾯和字符界⾯都属于shell,但图形界⾯的shell常称为gui,字符界⾯的shell常称为cli14、cat /etc/shells 查看⽂件内容(linux⾥⾯提供的所有的shell)15、linux默认使⽤的shell是bash的shell16、echo $SHELL 查看当前使⽤的shell17、shell默认指的是bash,它的应⽤是最⼴泛的18、linux是彻底的多⽤户多任务,它可以直接多个⽤户同时进⾏操作19、ctrl+alt+f2-f6 对应5个shell ctrl+alt+f1 开始图形界⾯shell 作⽤:如何开始shell(也就是如何打开命令界⾯)20、虚拟终端的缩写为tty, 在字符界⾯下执⾏“tty"命令就可以显⽰⽤户⽬前所在的终端编号(终端名称)。
linux操作系统课程学习笔记,我的Linux学习笔记·Linux操作系统基础今天的笔记主要是关于Linux操作系统根底的相关学问。
那就从我⾯前的电脑开端讲起。
计算机和操作系统计算机主要包括五个部分:运算器,控制器,存储器,输⼊设备和输出设备。
通常,运算器,控制器再加上其他⼀些部件如寄存器等构成了我们通常所说的CPU(central processing unit),存储器则主要是内存。
运算器,控制器和存储器可以实现数据的处理.但是数据从何⽽来,运算之后的结果去往哪⾥?这就需要输⼊设备和输出设备(I/O设备)。
我们通常⽤到的输⼊设备包括键盘⿏标等,输出设备为屏幕,打印机等。
值得⼀提的是,计算机中有个叫做硬盘的东西,它并不是存储器,⽽是⼀个I/O设备。
在将数据读取到内存时,它是⼀个输⼊设备;⽽将结果保存到磁盘时,它就变成了⼀个输出设备。
这么多设备整合在⼀起,就成了⼀台计算机。
它可以接收我们的指令(键盘⿏标),通过运算(CPU),把结果展⽰给我们(屏幕,硬盘等)。
但是这么多硬件是如何协调作⽤,共同完成⼀个任务⽽不会我⾏我素地乱来呢?我们需要⼀个东西,它可以控制硬件有序地⼯作,各⾃执⾏⾃⼰的任务,这个东西就是操作系统(Operating System)。
操作系统是⼀个特殊的软件,它的任务就是硬件管理—控制CPU的运算,控制内存的分配,控制计算机的⼏乎⼀切。
假如⼀台电脑没有操作系统,它可能只是⼀个艺术品,或者⼀堆废铁。
⼀个完整的操作系统包括内核和⼀些辅助软件。
内核的主要任务就是进⾏硬件管理,它是⼀个操作系统最基础最底层的东西。
内核若想很好地控制硬件并使其发挥相应的功能,需要和硬件相识相知相爱,他俩可以成为完美的⼀对,全都仰仗于驱动的帮忙。
驱动是硬件的灵魂,它向操作系统提供了访问和使⽤硬件的接⼝,以便在某项任务中最⾼效地调⽤硬件。
什么是LinuxLinux就是⼀个操作系统,它可以管理整个计算机硬件,并且可以接收我们的指令,来指挥硬件完成相应的任务,并把结果反馈给我们。
鸟哥的linux私房菜(基础篇)学习笔记鸟哥的linux私房菜(基础篇)是一本非常好的Linux入门教材,它全面介绍了Linux 的基础知识,包括Linux的安装、文件系统、用户管理、进程管理、磁盘管理、文件编辑器、Shell编程以及Linux网络等方面。
本文将简单介绍一些我学习这本书时的笔记和心得,以期为Linux新手提供一些帮助。
1. 操作系统和内核操作系统是由内核和外壳组成的,内核是操作系统最基础的组成部分,它负责处理硬件和软件的交互,包括驱动程序、内存管理、进程管理和文件系统等。
而外壳则是用户和操作系统进行交互的界面,我们可以通过命令行或者图形化界面与系统进行交互。
2.文件系统在Linux系统中,所有资料都以文件的形式保存在文件系统中,文件系统采用树形结构。
在Linux中,根目录是"/",其他目录都是在根目录下面的子目录。
我们可以使用ls 命令来查看文件目录和文件,也可以使用cd命令来进入和退出目录,另外,文件名是区分大小写的。
3.用户管理在Linux中,每个用户都有自己的ID号、用户名和密码。
通过用户管理,我们可以添加、删除或修改用户,另外,我们可以通过权限控制来限制普通用户访问系统的某些文件或命令,使系统更安全。
4.进程管理在Linux中,每个程序都是一个进程,我们可以使用ps命令查看系统中运行的进程,也可以使用kill命令来终止特定的进程。
另外,我们可以使用top命令来查看系统中当前占用CPU资源最多的进程,以便优化系统性能。
5.磁盘管理Linux系统中的磁盘分为硬盘和分区,我们可以使用fdisk命令来分区,也可以使用mkfs命令来格式化分区,以便在系统中进行挂载。
另外,我们可以使用df命令来查看文件系统的使用情况,以便合理管理磁盘空间。
6.文件编辑器在Linux中,有很多种文件编辑器,如vi、vim、nano等。
其中,vi是最常用的编辑器,而vim是vi的增强版,它提供了更多的功能和快捷键。
目录第一章 LINUX简介及安装 (2)一、LINUX介绍 (2)二、LINUX安装 (2)三、LINUX目录 (2)四、总结来说: (4)第二章常用命令及帐户管理 (4)一、linux命令格式 (4)二、常用命令 (4)三、用户管理命令 (5)使用技巧: (7)第三章 vi 编辑器 (8)一、Linux 系统中的编辑器知识 (8)二、vi 的模式 (8)三、命令: (8)第四章 SHELL的使用 (8)一:Shell的环境 (8)二、Bash的主要功能 (9)三、Shell变量 (9)第五章、应用程序安装与管理 (11)一、Linux应用程序组成 (11)二、RPM(Redhat Package Manager)包管理 (11)三、应用程序的编译安装 (11)第六章Linux系统管理 (12)一、启动过程: (12)二、运行级别: (12)三、系统服务的启动状态: (13)四、磁盘空间配额: (14)五、压缩命令: (14)第7章Linux基本网络配置 (15)第八章 NFS文件系统: (15)一、NFS的概述和安装 (15)二、NFS服务器的配置 (16)三、图形界面的NFS服务器配置工具: (16)第一章 LINUX简介及安装一、LINUX介绍1Linux:Linux是由芬兰大学的Linus Torvalds 李納斯发起创建的开源软件项目。
2版本号xx.yy.zz :①.xx表为主版本号,yy为次版本号,zz为修订的版本号。
②.次版本号中,单数代表测试版,双数代表正式发行版3开源软件:①源代码开放。
②GPL协议:主要是以源代码形式发布,任何人都可以得到源代码,但是不提供任何的担保,不限制商业性质的发行和包装。
③LGPL许可协议:允许在使用者自己的应用程序中使用程序库,即使不公开自己的源代码。
二、LINUX安装1RHEL4是由RED HAT公司发布的2Linux硬盘概念:①可以分为主分区、扩展分区、逻辑分区。
【Linux】学习笔记:(⼆)⽤户和组群账户管理⽬录前⾔在Linux系统中,⽤户账户是登录系统的唯⼀凭证,其中root⽤户是系统的最⾼管理者,该⽤户的UID是0,与⽤户和组群账户相关的配置⽂件有/etc/passwd,/etc/shadow,/etc/group和/etc/gshadow。
⼀、⽤户账户简介1、⽤户账户分类root⽤户root⽤户UID为0。
root⽤户的权限是最⾼的,普通⽤户⽆法执⾏的操作,root⽤户都能完成,所以也称之为超级⽤户系统⽤户系统⽤户的UID为1~999这类⽤户不具有登录Linux的能⼒,但却是系统运⾏不可缺少的⽤户。
普通⽤户系统⽤户的UID为1000~60000在Linux系统上进⾏普通操作,其使⽤系统的权限受限制。
2、 /etc/passwd⽂件假设以账户zhangsan登录系统时,系统⾸先会检查/etc/passwd⽂件,存在zhangsan账户,然后确定⽤户zhangsan的UID,通过UID确认⽤户⾝份,如果存在,则读取/etc/shadow⽂件中对应的密码,核实⽆误,则登录系统,读取⽤户的配置⽂件[root@centos83 home]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin..............(省略)..........sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinrngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologinzhangsan:x:1000:1000::/home/zhangsan:/bin/bash字段字段含义⽤户名在系统中⽤户名应该具有唯⼀性密码存放加密⽤户的密码,看到的是⼀个x,其实密码已经被映射到/etc/shadow⽂件中⽤户标识号(UID)每个⽤户的UID都是唯⼀的,root⽤户的UID是0,普通⽤户的UID默认从1000开始组群标识号(GID)在系统内⽤⼀个整数标识⽤户所属的主要组群ID号,每个组群ID都是唯⼀的⽤户名全称⽤户名描述,可以不设置主⽬录⽤户登录系统后⾸先进⼊的⽬录登录shell⽤户使⽤的Shell类型,Linux系统默认使⽤的Shell是/bin/bash2、 /etc/shadow⽂件/etc/shadow⽂件内容包括⽤户及被加密的密码以及其他/ect/passwd不能包括的信息,⽐如账户有效期等/etc/shadow⽂件只有root⽤户可以读取和操作,确保系统安全[root@centos83 home]# cat /etc/shadowroot:$6$Uq9EeN5GfNDLF83M$csUva0exzO/n3PIvhKv5D1Xs3Ga06G2whjfagtEtJUW1wlQbREEd6HkOjTRCTqGuZCXvg2WQ1wdyzqY.qfAzE1::0: 99999:7:::bin:*:18397:0:99999:7:::..............(省略)..........sshd:!!:18625::::::rngd:!!:18625::::::zhangsan:$6$HMTy.raoMPbhboQn$71FPRHyRycVf3AcenfNW1n7/qD7ep.x5vSeBSSxzJdWmvjoQ98oDhfA8Kz/6PlOgKe/ksj58AXeWBPOGAm/dl1 :18625:0:99999:7:::字段字段含义⼆、 ⽤户账户设置1、useradd :创建⽤户创建⽤户useradd moon创建⽤户并设置UID 为1010useradd -u 1010 moon创建⽤户并设置⽤户所属群组为rootuseradd -g root moon创建系统⽤户mysql 并设置所属组群useradd -r -g mysql mysql2、 usermod :修改⽤户账户修改⽤户pp 的登录名为moonusermod -l moon pp修改⽤户moon 账户过期时间为2028年11⽉23⽇usermod -e 11/23/2028 moon修改⽤户moon 的主⽬录到/home/oopp ,并⾃动创建⽬录usermod -d /home/oopp -m moon ⽤户名这⾥的⽤户名和/etc/passwd 中的相同加密密码密码已经加密,如果由⽤户显⽰"!!",则表⽰这个⽤户还没有设置密码,⽆法登录到系统⽤户最后⼀次更改密码的⽇期从1970年1⽉1⽇算起到最后⼀次修改密码的时间间隔天数密码允许更换前的天数如果设置为0,则禁⽤此功能。
Linux学习笔记⼀(⽂件和⽬录操作)1.基本shell操作命令解析器--根据命令的名字,调⽤对应的可执⾏程序shell--unix操作系统bash--Linux操作系统(⽂件系统)Linux⽂件系统的存储单元是块在磁盘上存储的时候每个⽂件都有⼀个inode--i节点,保存了⼀些⽂件信息,通过iNode找到对应的⽂件a.快捷键b.虚拟终端history--查询命令的历史记录ctrl+p == 向上的箭头,查询上⼀个命令ctrl+n == 向下的箭头,查询下⼀个命令ctrl+b 向左移动backctrl+f 向右移动forwardctrl+a 移动到⾏⾸ctrl+e 移动到⾏尾ctrl+h 刪除光标前⾯的字符ctrl+d 刪除光标覆盖的字符ctrl+u 刪除光标前⾯的所有字符ctrl+k 删除光标位置到⾏尾的字符ctrl+l或者clear命令清理屏幕c.命令和路径补齐tab智能提⽰键,按⼀次没反应说明有很多符合条件的命令,再按⼀次出现符合条件的命令列表cd ⽬录 + 连续两次tab,显⽰⽬录下⼀级的所有路径d.centos7防⽕墙操作systemctl start firewalld.service 启动systemctl enable firewalld.service 开机启动systemctl stop firewalld.service 停⽌systemctl disable firewalld.service 禁⽌开机启动systemctl status firewalld.service 查看状态firewall-cmd --state 查看状态2.Linux系统⽬录结构ls 路径(查询当前路径下的所有⽂件)/根⽬录下的⽬录说明:/bin bin是binary的缩写,这个⽬录存放着经常使⽤的命令可执⾏程序/boot 存放的是启动Linux时的⼀些核⼼⽂件,包括⼀些连接⽂件以及镜像⽂件(开机启动项)/dev 是Device(设备)的缩写,该⽬录存放的是Linux的外部设备,在Linux中访问设备的⽅式和访问⽂件的⽅式是相同的(Linux奉⾏⼀切皆⽂件,它会把所有硬件外设抽象成设备⽂件存到dev⽬录之下,⽐如⿏标键盘)/etc ⽤来存放所有系统管理所需要的配置⽂件和⼦⽬录/home ⽤户的主⽬录,在Linux中,每个⽤户都有⼀个⾃⼰的⽬录,⼀般该⽬录名是以⽤户的账号命名。
重启命令立刻重启(root用户使用)rebootshutdown -r nowinit 610分钟后自动重启(root用户使用)shutdown -r 10在时间为20:35时候重启(root用户使用)shutdown -r 20:35如果是通过shutdown命令设置重启的话,可以取消重启shutdown -c关机命令立刻关机(root用户使用)haltpoweroffshutdown -h nowinit 010分钟后自动关机shutdown -h 10hostname命令查看主机名hostname设置主机名临时修改hostname 主机名永久修改vi /etc/hostname网络服务查看IP信息ip a网络连通性测试ping [选项] 目标主机设置网络信息vi /etc/sysconfig/network-scripts/ifcfg-ens32重启network网络服务service network restart防火墙设置查看防火墙状态systemctl status firewalld关闭防火墙systemctl start firewalld禁止开机启动systemctl disable firewalld主机映射文件修改主机名与IP映射关系vi /etc/hosts目录操作命令查看工作目录(Print Working Directory)pwd切换工作目录(Change Directory)cd [目录位置]列表(List)显示目录内容ls [选项]... [目录或文件名]常用命令选项-l :详细信息显示-a:显示所有子目录和文件的信息,包括隐藏文件-A:类似于“-a”,但不显示“.”和“…”目录的信息-R:递归显示内容创建新的目录(Make Directory)mkdir [-p] [/路径/]目录名统计目录及文件的空间占用情况(estimate file space usage)du [选项]... [目录或文件名]常用命令选项-a:统计时包括所有的文件,而不仅仅只统计目录-h:以更易读的字节单位(K、M等)显示信息-s:只统计每个参数所占用空间总的大小文件操作命令新建空文件,或更新文件时间标记touch 文件名查看文件类型file 文件名复制(copy)文件或目录cp [选项] 源文件或目录… 目标文件或目录常用命令选项-r:递归复制整个目录树-p:保持源文件的属性不变-f:强制覆盖目标同名文件或目录-i:需要覆盖文件或目录时进行提醒删除(Remove)文件或目录rm [选项] 文件或目录常用命令选项-f:强行删除文件,不进行提醒-i:删除文件时提醒用户确认-r:递归删除整个目录树移动(Move)文件或目录mv [选项]... 源文件或目录… 目标文件或目录如果目标位置与源位置相同,则相当于改名显示系统命令所在目录which <选项> command(命令名称)常用命令选项-a:将所有由PATH路径中可以找到的指令均列出,而不止第一个被找到的指令名称文件内容操作命令显示出文件的全部内容cat全屏方式分页显示文件内容more交互操作方法按Enter键向下逐行滚动按空格键向下翻一屏、按b键向上翻一屏按q键退出与more命令相同less查看文件开头的一部分内容(默认为10行)head -n 文件名查看文件结尾的少部分内容(默认为10行)tail -n 文件名统计文件中的单词数量(Word Count)等信息wc [选项] 目标文件常用命令选项-l:统计行数-w:统计单词个数-c:统计字节数查找文件里符合条件的字符串grep [选项] <关键字> <文件…>常用选项-c:计算匹配关键字的行数-i:忽略字符大小写的差别-n:显示匹配的行及其行号-s:不显示不存在或不匹配文本的错误信息-h: 查询多个文件时不显示文件名-l:查询文件时只显示匹配字符所在的文件名–color=auto:将找到的关键字部分加上颜色显示压缩命令压缩(解压)文件或目录,压缩文件后缀为gzgzip [选项] 压缩(解压缩)的文件名常用选项-d将压缩文件解压(decompress)-l显示压缩文件的大小,未压缩文件的大小,压缩比(list)-v显示文件名和压缩比(verbose)-num用指定的数字num调整压缩的速度,-1或–fast表示最快压缩方法(低压缩比),-9或–best表示最慢压缩方法(高压缩比)。
==============================智能娱乐系统===================硬件:中控:UI,音视频数据处理能力操作:显卡,声卡、LED、游戏机、触控屏ARM :cortex - A软件:开发环境:vmware + linux(ubuntu)程序开发:linux C程序移植:交叉开发效果:自动处理程序一、Linux 命令linux : 图形简陋---> 追求效率高移植性强,开源性linux :命令行形式进行交互ls: 查看全部文件名/ --->根目录pwd: 打印当前的路径/home/gec 等于~ ---> 家目录cd : 直接回到/home/geccd / : 回到根目录/cd ..: 回到上一级的目录ls -l类型权限链接数创建者工作组大小日期目录名d rwxrwxr-x 2 gec gec 4096 Jul 2 2013 Desktopd:目录(第一个字母:-:普通文件d:目录)rwxrwxr-x:文件的权限r:读权限w:写权限x:执行权限用户权限:rwx(创建者的权限)rwx(同组人)r-x(其他人)clear: 清除屏幕信息touch 创建文件touch xxxx ----> 因为身份是gec,所以必须在/home/gec中创建rm 删除文件/目录rm xxxx(文件名) ----> 因为身份是gec,所以必须在/home/gec中删除rm xxxx(目录名) -rfgedit 编辑文件gedit xxxxcat 查看文件内容cat xxxxmkdir 创建目录mkdir xxxx ----> 因为身份是gec,所以必须在/home/gec中创建cp 拷贝命令cp 文件名目录名---> cp abc.c 123/chmod 修改文件的权限-rw-rw-r-- 1 gec gec 20 Apr 14 19:43 abc.c4214214216 6 4希望三个人都是可读可写可执行7 7 7chmod 777 xxxxchmod 777 abc.c-rwxrwxrwx 1 gec gec 20 Apr 14 19:43 abc.c二、linux与windows间的共享目录1,在windows系统中的D:\创建一个名字为share的目录2, "虚拟机" --- "设置" ---- "选项" --- "共享文件夹" --- "总是启用" ---"确定" 3,在linux系统输入以下命令来进入共享目录cd /mnt/hgfs/share/4,在linux与windows分别创建目录和文件,观察两个系统的变化=====================开发板的使用=========================一、核心板CPU:ARM - cortex -A8名字:S5PV210内存:4块4 * 128MB = 512MBnandfalsh: 1G ---〉linux系统二、底板电源线插口:5V按键音频输入(红色)输出(绿色)串口:连接PC机与开发板网口:快速传输数据三、使用GEC210板子1,接上电源线2,串口线一端接在开发板上,另一端接在USB转串口上,USB口接在电脑的USB口上。
3,双击"D:\岭南实训包\Hl-340.exe" ----"安装"4,查看对应的USB口的com口右键选择"计算机" --- "属性" ---- "设备管理器" ---"端口"假如:"COM3"5,使用一个串口软件secureCRT双击"D:\岭南实训包\SecureCRT\SecureCRT.exe"6, "文件" --- "快速连接"协议:serial端口:COM3波特率:115200数据位:8奇偶检验位:none停止位:1流控:把全部的打钩去掉---- "连接"7,重启启动====================项目实操1(本地开发)=========================技术点:本地开发一般只用于检查程序的语法是否正确,与ARM无关。
工程文件的格式:xxx.c1,切换到工作路径cd /mnt/hgfs/share/2,建立一个工程文件touch project.c3,在windows下安装notepad++来编辑工程D:\岭南实训包\npp_6.9.2_Installer.exe4,在windows使用notepad++打开project.c--------------------------------#include <stdio.h>int main(){printf("my project!\n");return 0;}---------------------------------5,在linux系统中编译工程,得到一个可执行的程序gcc project.c -o project6,执行程序./project=======================项目实操2(交叉开发)========================技术点:交叉开发,可以编译出一个适合于ARM平台使用的程序1,打开secureCRT ,输入以下命令rz -y选择"D:\share\project" ---- "添加" ----- "确定"2,直接执行,会提示权限拒绝[root@GEC210 /]# ./project-/bin/sh: ./project: Permission denied ---> 权限拒绝3,修改project权限chmod 777 project4,执行./project./project: line 1: syntax error: unexpected "("----> 文件的运行平台不一致解决方案:分析project文件,重新编译得到一个新的运行平台文件ubuntu ---> 80386(x86)开发板---> ARM1,在ubuntu中重新编译project.carm-linux-gcc project.c -o project2, 在secureCRT中执行以下命令rz -y选择下载"D:\share\project" ---- "添加" ----- "确定"3,修改project权限chmod 777 project4,执行./project========================项目实操3(LCD开发)==========================技术点:ARM板LCD大小:800*480操作显卡--> jpeg_show ---> 显示jpeg图片的工具目标:example.jpg1, jpeg_show D:\岭南实训包\岭南学院学生实训包\ARM\jpeg_show2, libjpeg.so.9 D:\岭南实训包\岭南学院学生实训包\lib\libjpeg.so.9---> jpeg库(帮助处理jpeg图片的编解码)3,打开secureCRT ,输入以下命令rz -y选择"jpeg_show、libjpeg.so.9 、example.jpg" ---- "添加" ----- "确定"4,把libjpeg.so.9拷贝到/lib/cp libjpeg.so.9 /lib/5、修改权限chmod 777 jpeg_show6、执行./jpeg_show example.jpg今晚作业:把项目实操3加入project.c中./project后,既能够打印my AI project!又能够显示一张图片思路:在project.c中执行“./jpeg_show xxx.jpg”,但是这样写不符合linux系统的语法规则,所以必须要按照linux的编程语法来实现这个功能。
./jpeg_show xxx.jpg ----> 调用system函数system()语法?参数?1,在ubuntu中,输入以下命令,查看system函数的功能手册数man -f systemsystem (3) - execute a shell command----> 我们要调用的system函数在3手册2,进入第3手册,查看system函数的用法man 3 system-----> 进入了system的帮助文档,退出按“q”int system(const char *command);project.c --> system("./jpeg_show xxx.jpg");------------------------#include <stdio.h>int main(){printf("my AI project!\n");system("./jpeg_show xxx.jpg");return 0;}------------------------3,回到工作目录share中cd /mnt/hgfs/share/4,重新编译arm-linux-gcc project.c -o project5,在secureCRT中,执行以下命令rz -y选择下载"D:\share\project" ---- "添加" ----- "确定"6,修改权限chmod 777 project7,执行./project========================项目实操4(LCD效果增强)=======================技术点:一个工程在执行时,在系统中就会产生一个进程要使得程序延迟若干秒后,再执行接下的程序,必须把进程挂起sleep() ---> 把进程挂起若干秒1,查看sleep()函数的手册数man -f sleepsleep (3) - Sleep for the specified number of seconds2, 查看第3手册中的sleep函数man 3 sleepunsigned int sleep(unsigned int seconds);seconds:整数的秒数假如让进程挂起5秒---> sleep(5);./project后1,打印my project!2, 显示login.jpg3, 2秒后,再显示main.jpg--------------------------------------#include <stdio.h>int main(){printf("my AI project!\n");system("./jpeg_show login.jpg");sleep(2);system("./jpeg_show main.jpg");return 0;}(注意:记得把main.jpg和login.jpg也放进开发板)--------------------------------------------======================项目实操5(音频处理)============================技术点:1,开发板中绿色(音频输出)线2,播放的歌曲为:xxx.mp33, 使用mp3播放器:madplay4, 解释mp3歌曲的编码libid3tag.so.0 --->解释mp3歌曲libmad.so.0 --->解释madplay播放器madplay xxx.mp35,把当前歌曲取消掉killall -9 madplay1) 把libid3tag.so.0和libmad.so.0和xx.mp3传输到开发板2) 把libid3tag.so.0和libmad.so.0拷贝到/lib/cp libid3tag.so.0 /lib/cp libmad.so.0 /lib/3) 使用madplay工具来播放歌曲madplay xx.mp3把项目实操5加入到项目./project1,打印my project2,显示login.jpg3,播放歌曲4,2秒后,看到main.jpg解决方法:播放歌曲在后台播放------------------------------------------------#include <stdio.h>int main(){printf("my AI project!\n");system("./jpeg_show login.jpg");system("madplay start.mp3 &");----> 播放歌曲需要在后台执行,添加& 符号sleep(2);system("./jpeg_show main.jpg");return 0;}----------------------------------------------======================项目实操6(工程管理文件)==========================技术点:因为编译命令过长,所以makefile可以帮助我们简单地通过编译1,把D:\岭南实训包\岭南学院学生实训包\makefile放到D:\share中2,在D:\share创建一个命名为Headers目录,用于存放工程的头文件把D:\岭南实训包\岭南学院学生实训包\project.h放到D:\share\Headers中3, 在D:\share创建一个命名为libs目录,用于存放工程的库文件把D:\岭南实训包\岭南学院学生实训包\libts.so放到D:\share\libs中4, 在linux系统中编译make5, 清除目标文件projectmake clean6, 重新编译make==============项目实操7(人机交互--访问触控屏驱动)====================技术点:1,在linux下,一切都是文件普通文件、设备驱动---->文件2,ARM平台的所有硬件的驱动全部存放/dev (device)----> 触控屏对应的驱动文件也是在/dev3, 鼠标、触控屏、键盘--->linux下,都是叫事件----> /dev/event0 4,访问(打开)触摸屏ts_open(驱动文件名字,阻塞方式);1) 把D:\岭南实训包\岭南学院学生实训包\tslib.h放到D:\share\Headers中2) 在project.c中,添加新加的头文件添加:#include "project.h"#include "tslib.h"因为project.h和tslib.h都是自己添加,需要用"",不能用<> 3) 访问触摸屏添加:struct tsdev* ts = ts_open("/dev/event0",0);if(ts != NULL){printf("open touch OK!\n");}返回值:struct tsdev* (结构体指针)类型如果函数执行成功,则返回ts如果函数执行失败,则返回NULL4)在linux中编译make5) 在secureCRT中,执行以下命令rz -y选择下载"D:\share\project" ---- "添加" ----- "确定"6,修改权限chmod 777 project7,执行./projectopen touch OK!===================项目实操8(读取压力值)============================1)访问驱动后,需要进一步配置触摸屏的数据,否则不能读取坐标ts_config(struct tsdev*) 需要struct tsdev*类型的参数在工程中,添加以下代码:ts_config(ts);2)采样点,当你的手指触摸屏幕时,都会给你返回一个以下的结构struct ts_sample{int x;----> x轴坐标int y;----> y轴坐标unsigned int pressure;---->压力值struct timeval tv;---->事件发生的时间};在工程中,添加以下代码:struct ts_sample buf;3)读取压力值从触摸屏的驱动中读取数据到buf变量中在工程中,添加以下代码:ts_read(ts,&buf,1);printf("pressure = %d\n",buf.pressure);4)在linux中编译make5) 在secureCRT中,执行以下命令rz -y选择下载"D:\share\project" ---- "添加" ----- "确定"6,修改权限chmod 777 project7,执行./projectopen touch OK!使用手指触摸屏幕pressure = 200=======================项目实操9(循环读取坐标)=================技术点:ts_config(ts); 用于配置触摸屏的数据,只需要配置一次。