课堂笔记三之嵌入式Linux开发工具

嵌入式Linux的使用(命令)

用户管理
su、sudo、useradd、userdel
文件管理
Linux一切皆为文件:普通文件(以-开头)、目录文件(以d开头)、设备文件(以c字符设备/b块设备开头)、链接文件(以l开头)、管道文件(以p开头)、堆栈文件(以f开头)、共享文件(以s开头)。
ls\touch\cat\gedit\gcc\rm\rm-f\chmod
目录管理
根目录的结构:bin/sbin/etc/dev/home/root/usr/lib
mkdir cd cd…/绝对路径和相对路径 cp mv
其他
tar、clear、pwd
功能命令:
grep、sed、awk、find、file、which
untools、apt-

嵌入式Linux开发工具——vim、gcc、gdb、make

vim(文本编辑器):学会使用和如何配置vim;
gcc(编译器):学会制作动态库和静态库及使用与区别;
gdb(调试器):设置断点、单步执行、调试内存错误;
make(工程管理器):编写makefile文件。

一、嵌入式Linux开发工具之文本编辑器:vim(功能最强大的文本编译器——摆脱鼠标)

1、如何安装vim?
在终端输入:sudo apt-get install vim
2、如何配置vim?
在终端输入:/etc/vim/vimrc
拓展:
set mouse=a
set number
set sw=4
set autoindent
set cursorline
Alt
课堂笔记三之嵌入式Linux开发工具_第1张图片
3、如何在vim中进行程序编写?
vi—vim—gvim:命令模式(nyy\p\ndd\u)、插入模式(i、a)、底行模式(shift+:)
i/a:进入插入模式;
esc/shift+:w保存,q退出,wq保存退出;
dd:删十行;
n:恢复;
yy p:粘贴。
拓展:
优秀的IDE(集成开发环境)——vscode

二、嵌入式Linux开发工具之编译器:gcc(全称:GNU cc)

1、gcc的特点
(1)是GNU的工具;(2)是一款交叉编译器arm-Linux-gcc)
拓展:
a.源文件到可执行文件需要经历哪几个步骤?
预处理:头文件展开、宏替换、条件编译(-E、-I、-D)
编译:将预处理文件编译成汇编文件(.s)(-S)
汇编(每一款处理器有自己的汇编):将汇编文件编译生成目标文件(.o)(-c)
链接:建立符号表——可执行文件(a.out)
课堂笔记三之嵌入式Linux开发工具_第2张图片
课堂笔记三之嵌入式Linux开发工具_第3张图片
b.在电脑上hello.c gcc hello.c a.out ./a.out在Linux手机上是否可以运行?(PC:x86处理器;手机:ARM处理器)
a.out是由x86的汇编生成的,里面保存的机器码只能用x86识别,ARM识别不了。
c.什么是交叉编译器?
在当前CPU平台下编译出在其他平台下可执行代码;
在宿主机上编译出能够在目标机上运行的代码。课堂笔记三之嵌入式Linux开发工具_第4张图片
d.为什么需要交叉编译?
不同的处理器有不同的汇编,不同的汇编所生成的可执行文件只能被当前的CPU所执行。
file a.out:查看可执行文件

预处理:
gcc -E hello.c:只进行预处理——>输出到终端
gcc -E hello.c > hello.i:重定向,到预处理.i文件
课堂笔记三之嵌入式Linux开发工具_第5张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第6张图片
头文件展开:
include “stdio.h"与include 的区别:
搜索路径不同:< >的搜索路径:系统的头文件目标(/user/include);” "的搜索路径:先在当前目录查找,找不到再到系统的头文件目录。
头文件不在系统下面也不在当前目录下的解决方法:在程序中加上路径;用-I指定头文件的第三方搜索路径(gcc hello.c add.c -Itest)
课堂笔记三之嵌入式Linux开发工具_第7张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第8张图片
课堂笔记三之嵌入式Linux开发工具_第9张图片
课堂笔记三之嵌入式Linux开发工具_第10张图片
课堂笔记三之嵌入式Linux开发工具_第11张图片
课堂笔记三之嵌入式Linux开发工具_第12张图片
课堂笔记三之嵌入式Linux开发工具_第13张图片
课堂笔记三之嵌入式Linux开发工具_第14张图片
课堂笔记三之嵌入式Linux开发工具_第15张图片
宏替换:
课堂笔记三之嵌入式Linux开发工具_第16张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第17张图片
条件编译:
课堂笔记三之嵌入式Linux开发工具_第18张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第19张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第20张图片
2、常用编译选项
-E:编译文件的时候只进行预处理
-S:编译阶段停下来
-c:在汇编结束之后停下来,生成.o文件(目标文件)
-o:重命名可执行文件
-I:指定头文件的第三方搜索目录
-D:外部向.c文件里添加宏
-Wall:开警告
-w:关警告
-O1:一级等级优化
-O2:二级等级优化
-O3:三级等级优化
gcc hello.c -o hello:给hello.c重命名可执行文件
gcc hello.c -w -o hello:关掉警告
gcc -Wall demo.c -o demo:警告信息全部开
Alt
课堂笔记三之嵌入式Linux开发工具_第21张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第22张图片
课堂笔记三之嵌入式Linux开发工具_第23张图片
课堂笔记三之嵌入式Linux开发工具_第24张图片
课堂笔记三之嵌入式Linux开发工具_第25张图片
课堂笔记三之嵌入式Linux开发工具_第26张图片
课堂笔记三之嵌入式Linux开发工具_第27张图片
课堂笔记三之嵌入式Linux开发工具_第28张图片
3、静态库和动态库的制作
(1)什么是库文件?
库文件的作用:保存的数和变量(相当于仓库)
库文件的特点:保存的函数与变量,只能使用但不能看到其实现。
课堂笔记三之嵌入式Linux开发工具_第29张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第30张图片
课堂笔记三之嵌入式Linux开发工具_第31张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第32张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第33张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第34张图片
(2)Linux库文件的分类:
静态库:在编译阶段加载(加载:将库文件的代码加载到源文件)(后缀为.a);
动态库:在运行时加载(后缀为.so)。
生成的可执行文件存在区别(优缺点):
①使用静态库生成的可执行文件大于动态库生成的执行文件(导致的问题:程序运行占用内存较多);
②使用静态库生成的可执行文件难以升级,使用动态库生成的可执行文件易于升级;
③使用静态库生成的可执行文件运行速度快,使用动态库生成的可执行文件运行速度慢;
④使用静态库生成的可执行文件里的代码容易部署,使用动态库生成的可执行文件里的代码难以部署。
(3)Linux库文件的存放路径:(自动搜索路径)
/lib:存放的系统运行所需要的库
/usr/lib:存放的是程序运行所需要的库
(4)如何制作静态库?
①将需要保存的函数所在的文件编译成目标文件(gcc -c add.c —>add.o)
②静态库的制作工具:ar
ar rcs(不存在就创建,存在就更新)库名 目标文件名
ar rcs libadd.a add.o
(cp libadd.a /lib or/usr/lib)
③使用
gcc 源文件 -l库名 -L库存放的路径
gcc main.c -ladd a -L. -o add
Alt
课堂笔记三之嵌入式Linux开发工具_第35张图片
课堂笔记三之嵌入式Linux开发工具_第36张图片
Alt
课堂笔记三之嵌入式Linux开发工具_第37张图片
(5)如何制作动态库?
制作:
gcc -shared -fPIC 源文件 -o libcal.so
gcc -shared -fPIC add.c sub.c -o libcal.so
课堂笔记三之嵌入式Linux开发工具_第38张图片
使用(两种):
cp libcal.so /usr/lib
gcc main.c -lcal
课堂笔记三之嵌入式Linux开发工具_第39张图片
gcc main.c ./libcal.so -o cal
课堂笔记三之嵌入式Linux开发工具_第40张图片

你可能感兴趣的:(笔记)