2020-03-12

嵌入式Linux的使用(命令)
用户管理:su、sudo、useradd、userdel
文件管理:Linux一切皆为文件;(-普通文件、d目录文件、c/b设备文件、l链接文件、p管道文件、f堆栈文件、s共享文件)
嵌入式Linux的开发工具-vim、gcc、gdb、makeVim(文本编辑器):学会使用和如何配置vim;
Gcc(编译器):学会制作动态库和静态库及使用与区别;
Gdb(调试器):设置断点、单步执行、调试内存错误;
Make(工程管理器):编写makefile文件。
Linux文本编辑器:vim–功能最强大文本编辑器–摆脱鼠标;Vi-vim-gvim:命令行模式(nyy\p\ndd\)、插入模式(a、i)、嵌入式Linux的开发工具-gcc编译器:gcc(GNU cc)
1.gcc特点(GNU工具、交叉编译器)什么是交叉编译器?在当前CPU平台下编译出在其他COU平台下可执行的代码源文件到可执行文件需要经历哪几个步骤?预处理、编译、汇编、链接(pc:x86)Hello.c gcc hello.c a.out./a.out—>Linux手机(ARM)
※为什么需要交叉编译器
预处理:头文件展开,宏替换,条件编译-E-I-D
编译:将预处理文件编译为汇编文件.s -S
汇编:将汇编文件编译生成目标文件.o -C
链接:建立符号表–可执行文件
a.out
-o重命名可执行文件
“stdio”和的不同:
<>的搜索路径是系统的头文件目录(/usr/include)
“”的搜索路径是先在当目录径查找,找不到再到系统的头文件
一、gcc常用编译选项:
-E -S -c -o -I -D
-Wall -w
-O1 -O2 -O3
二、静态库.a和动态库的制作.so
1、什么库文件?
保存函数和变量(仓库)特点:
保存的函数与变量,只能使用但不能看到其实现。
2、Linux库文件:
静态库:
在编译阶段加载;(将库文件的代码加载到源文件)
动态库:
在运行时加载;
生成的可执行文件存在区别(优缺点)
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
3、使用gcc 源文件 -l库名 -L库存放的路径
gcc main.c -ladd -L -o add
如何制作动态库?
gcc -shared -fPIC 源文件 -o libcal.so
gcc -shared -fPIC add.c sub.c -o libcal.so
使用:
cp libcal.so/usr/lib
gcc main.c -lcal
gcc main.c./libcal.so -o cal

代码交流 2021