《嵌入式系统开发工具》由会员分享,可在线阅读,更多相关《嵌入式系统开发工具(65页珍藏版)》请在金锄头文库上搜索。
1、嵌入式Linux系统开发工具课程安排nLinux常用命令nLinux上程序编写nLinux上程序编译nLinux上程序调试n嵌入式Linux交叉开发过程Linux常用命令u用户切换变更用户:su + 用户名;不加用户名默认为root用户u用户管理添加用户账号:useradd + 用户名更改对于用户的账号密码:passwd +用户名更方便直接的方法是在图形界面下维护用户信息Linux常用命令u系统管理命令显示系统进程列表ps el : 显示所有进程及PID、时间、程序名、执行者等信息ps aux : 除了-el内容外,还显示CPU、内存占用率、进程状态 终止、挂起进程kill + PID: 杀死
2、PID对应进程kill -9 + PID: 强制杀死PID对应进程killall + 程序名:杀死程序对应的运行进程ctrl + c:终止当前控制台运行的程序ctrl + z : 挂起当前控制台运行的程序fg:继续挂起的程序kill l:显示系统信号,杀死进程依靠向进程发送信号 Linux常用命令u内存、磁盘管理命令查看磁盘分区:fdisk -l查看磁盘空间占用情况:df (默认单位为KB)统计目录或文件占用空间的大小:du a + 目录或文件(默认单位为KB)u文件系统挂载命令挂载文件系统:mout + 选项 + 类型 + 设备文件名 + 挂载点如:挂载U盘 mount (t vfat) /
3、dev/udisk /mnt/udisk设备文件名可以通过fdisk l 确定 卸载文件系统:umount + 挂载点Linux常用命令u文件创建创建目录:mkdir p + 目录名创建文件:touch + 文件名创建链接:ln + 目标 + 链接名硬链接: ln file file.hl符号链接: ln s file file.sl; ln s /home/jannzeng /wkdir删除目录:rm fr +目录名删除文件:rm f +文件名移动目录或文件: mv + 源文件或目录 + 目标文件或目录拷贝目录或文件: cp a 源文件或目录 + 目标文件或目录u文件删除、移动、拷贝Linu
4、x常用命令u显示文件信息显示文件信息显示详细信息:ls l +文件;不指定文件名则显示当前目录下所有文件; 显示隐藏文件信息:ls al,将隐藏文件一并显示文件属性显示当前路径pwdLinux常用命令u修改文件属性修改指定文件所有者:chown + 文件所有者 + 文件修改指定文件组所有者:chgrp + 文件组所有者 + 文件修改指定文件访问权限:chmod + 权限 + 文件符号标记权限:chmod a+w(a - w)(a = w), xnf八进制数权限:chmod 644 xnf-R选项标识递归设置当前目录及其子目录要在Linux上执行程序,程序文件必须带可执行权限将多个命令写到一个脚
5、本文件,如run.sh为脚本文件增加可执行权限:chmod u+x run.sh执行脚本文件: ./run.sh,实现命令批处理Linux常用命令u压缩文件对文件目录进行打包:tar +选项 + 打包后文件名 + 文件目录列表gzip格式:tar czvf jannzeng.tar.gz /home/jannzengbz2格式:tar cjvf jannzeng.tar.bz2 /home/jannzeng对文件目录进行解压:tar + 选项 + 打包文件 gzip格式:tar xzvf jannzeng.tar.gzbz2格式:tar xjvf jannzeng.tar.bz2解压到指定目录
6、:tar xzvf jannzeng.tar.gz C / Linux常用命令u查找文件在指定文件中搜索特定内容:grep + 格式内容 + 文件及路径搜索etc目录及子目录下带jannzeng的文件:grep “jannzeng” /etc -r支持正则表达式: grep jann* /etc -r应用于管道:ps aux | grep smbd; ls l grep a在指定目录中搜索文件:find + 路径 + -name + 格式文件名在当前目录及子目录下查找bak结尾的文件:find ./ -name *.bakLinux常用命令u显示文件内容连接并显示指定一个或多个文件:cat +
7、 选项 + 文件列表查看配置文件内容: cat /etc/profile;cat n /etc/profile; cat b /etc/profile合并文件:cat hello1.txt hello2.txt hello3.txt附加文件:cat hello1.txt hello2.txt显示一屏文本:more + 文件从头开始显示一屏:more /etc/profile;moremore显示暂停下来后,可以在末行输入交互命令:回车,显示下一行空格/Ctrl+f,向下滚一屏Ctrl+b,回显上一屏q,退出moreLinux常用命令u显示文件比more更好用的less,支持随意浏览文件回车,向
8、下移动一行y,向上移动一行空格,向下滚一屏b,向上滚一屏/pattern,按pattern格式搜索;n,匹配下一个;N,匹配上一个显示文件最前行:head /etc/profle显示文件最末行:tail /etc/profileLinux常用命令u比较文件比较两个不同的文件或不同目录下的两个同名文件比较两个文件:diff ruNa hello1.c hello2.c比较两个文件,生成补丁文件: diff ruNa hello1.c hello2.c hello1.patch把生成的补丁文件应由在现有的代码上将hello2.c的改变合并到hell1.c:patch hello1.c hello1
9、.patch cd /home/jannzeng; pach p2 hello1.c 剪切n行,n不给则剪切当前行(n)yy - 拷贝n行,n不给则拷贝当前行p - 粘贴u - 撤销当前操作,退回到上一次输入状态/+字符串+回车 - 查找指定字符串gg=G -对文件排版插入模式下ctrl+n - 自动补全Linux上程序编写uVi/Vim编辑命令末行模式下w+回车 - 保存当前输入; wq+回车-保存并退出; q!+回车 - 不保存退出行号+回车 - 定位到指定行%s/被替换字符串/替换字符串/g+回车 -执行全局替换e+文件路径名 -打开指定文件sp - 拆分窗ctrl+w-切换窗口Linu
10、x上程序编写uVi/Vim配置支持自主配置,支持插件全局配置文件/etc/.vimrc根用户配置文件/root/.vimrc; 插件目录/root/.vim课程安排nLinux常用命令nLinux上编写C程序nLinux上程序编译nLinux上程序调试n嵌入式Linux交叉开发过程Linux上程序编译uGcc简介GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C+和Object C等语言编写的程序gcc功能强大,而且可以编译如C、C+、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言。gcc又是一个交叉平台编译
11、器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译Linux上程序编译uGcc编译过程Linux上程序编译uGcc支持的文件惯用后续名Linux上程序编译u预处理阶段在该阶段,对包含的头文件(#include)和宏定义(#define、#ifdef等)进行处理 。使用gcc的选项“-E” 让gcc在预处理结束后停止编译过程:gcc E hello.c o hello.iu编译阶段gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作在检查无误后,gcc把代码翻译成汇编语言使用“-S”选项来进行查看,该选项只进行编译而不进行汇
12、编,生成汇编代码: gcc S hello.i o hello.sLinux上程序编译u汇编阶段把编译生成的“.s”文件(汇编码)转换成目标文件(机器码)使用gcc的选项“-c” 只汇编,不链接:gcc c hello.s o hello.ou链接阶段这里涉及到一个重要概念:库函数例如“printf”函数:在预处理中包含进”stdio.h”中只有函数声明,没有定义函数实现系统把这些函数的实现都放到名为libc.so.6的库文件中去Gcc会到系统默认的库搜索路径”/usr/lib”下查找,链接到libc.so.6函数库,从而调用”printf”函数库有静态库(“*.a”)和动态库(“*.so”)
13、,默认使用动态库链接动态库:gcc hello.o o hello链接静态库: gcc static hello.o o helloLinux上程序编译uGcc常用选项Linux上程序编译uGcc告警选项Linux上程序编译uGcc优化选项gcc可以对代码进行优化,它通过编译选项“-On”来控制优化代码的生成,其中n是一个代表优化级别的整数不同的优化级别对应不同的优化处理工作“-O”主要进行线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops)两种优化“-O2”除了完成所有“-O1”级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等“-O3”则还
14、包括循环展开和其他一些与处理器特性相关的优化工作使用原则:调试时不使用任何优化选项,最终发行的时候才考虑对其优化Linux上程序编译uGcc库选项用于对静态库、动态库的打包与链接Linux上程序编译uGcc宏选项-Dmacro用于编译阶段定义宏,将在C语言学习中展开使用uGcc调试选项-g:用于在可执行文件包含调试信息用于进行gdb调试gcc -Wall -g -I./inc main.c src/add.c -o main课程安排nLinux常用命令nLinux上编写C程序nLinux上程序编译nLinux上程序调试n嵌入式Linux交叉开发过程Linux上程序调试uGdb简介gdb调试器是
15、一款GNU开发组织并发布的UNIX/Linux下的程序调试工具它没有图形化的友好界面,但是它强大的功能也足以与微软的VC工具等媲美Linux上程序调试uGdb帮助gdb的命令很多,gdb把之分成许多个种类 ,help命令列出gdb的命令种类如果要看种类中的命令,可以使用help 命令也可以直接help 来查看命令的帮助。在gdb下,可以敲击两次TAB键来补齐命令的全称,如果有重复的,gdb会全部出来。 (gdb) help List of classes of commands: aliases - Aliases of other commands breakpoints - Making
16、program stop at certain points data - Examining data files - Specifying and examining files internals - Maintenance commands Type “help“ followed by a class name for a list of commands in that class. Type “help“ followed by command name for full documentation. Command name abbreviations are allowed if unambiguous.(gdb) help call Call a function in the program. The argument is the function name and arguments, in the