嵌入式

3.10(1)嵌入式笔记
嵌入式Linux的使用(命令)
用户管理:su sudo useradd userdel
文件管理:Linux 一切皆为文件
(普通文件-、目录文件d、设备文件c/b、链接文件l、管道文件p、堆栈文件f、共享文件s)
Is\touch\cat\gedit\gcc\rm\rm-f\chmod
目录管理:
根目录的结构:bin/sbin/etc/dev/home/root/usr/lib; sys proc
Mkdir cd cd… /绝对路径和相对路径
cp mv
其他:
tar clear pwd vmtools apt-get install
功能命令:grep sed awk find file which
嵌入式Linux开发工具-vim gcc gdb make
Vim(文本编辑器):学会使用和如何配置Vim
gcc(编辑器):学会制作动态库和静态库及使用区别;
gdb(调试器):设置断点、单步执行、调试内存错误;
Make(工程管理器):编写make file文件;
Linux 文本编辑器:Vim(功能最强大的文本编辑器)目标:摆脱鼠标
Vi vim gvim:命令行模式I \A、插入模式(yy复制 p粘贴 n dd删除 u恢复)、底行模式;
注意:esc shift: wq保存退出
Vim/etc/vim/vimrc进行配置
如何配合vim?/etc/vim/vimrc
弱化:IDE(集成开发环境) vscode
嵌入式Linux开发工具-gcc
编译器:gcc(Gnu cc)
1、gcc特点(Gnu工具、一款交叉编译器arm-linux-gcc)
2、什么是交叉编译器?
在当前的CPU平台下编译出在其他CPU平台下可执行的代码;
系统移植:(交叉编译)
在这里插入图片描述
3、文件到可执行文件需要经历哪几个步骤?
(1)预处理(2)编译(3)汇编(4)链接
预处理:头文件展开、宏替换、条件编译;
编译:将预处理文件编译成汇编文件.s;
汇编:将汇编文件编译成目标文件.o;
链接:建立符号表–可执行文件a.out;
Gcc-E hello.c只进行预处理
-I到指定目录找(第三方)
-DMAX=100宏替换
-s汇编代码
Gcc-c 汇编时停下来
-D目标文件
o 重命名可执行文件
-w 关掉警告
-Wall 开警告
<>与””区别:搜索路径不同
<> 系统头文件目录(/user/include)
“” 现在当前目录查找,找不到再到系统头文件目录查找;
静态库和动态库制作
1、什么是库文件?
保存的函数和变量(仓库)
特点:保存的函数与变量,只能使用但不能看见其实现;
2、Linux库文件:
静态库:在编译阶段加载(江库文件代码加载到源文件.a);
动态库:在运行时加载(.o);
生成的可执行文件存在区别(优缺点)
(1)使用静态库生成的可执行文件大于动态库生成的可执行文件;(程序运行占用内存较多)
(2)使用静态库生成的可执行文件难以升级,动态库生成的可执行文件易于升级;
(3)静态库运行速度快,动态库运行速度慢;
(4)使用静态库生成的可执行文件代码容易部署,动态库难以部署;
3、Linux库文件存放路径(自动搜索路径)
/lib:存放的系统运行的需要的库;
/usr/lib:存放的是程序运行时所需要的库;
如何制作静态库?
(1)将需要保存的函数所在的文件生成目标文件 gcc-c add.c—>add.o
(2)静态库的制作工具:ar
ar rcs 不存在就创建,存在就更新
库名 文件目标名 ar rcs libadd.a add.o(cp libadd.a/lib or/user/lib)
(3)使用
Gcc源文件-l库名-L库存放的路径
Gcc main.c-ladd-L.-o add
如何制作动态库?
Gcc-shared-fPIC源文件-o libca/.so
Gcc-shared-fPIC add.c sub.c-o libcal.so
使用:
Cp libcal.so/usr/lib
Gcc main.c-/cal
Gcc mian.c./libcal.so -o cal

代码交流 2021