嵌入式技术第三次课堂笔记

今日课堂目标:
嵌入式linux开发工具 vim gcc gdb make
vim文本编辑器:学会使用和如何配置vim
gcc编译器:学会制作动态库和静态库及使用与区别
gdb调试器:设置断点、单步执行、调试内存错误
make工程管理器:编写makefile文件
首先是Linux文本编辑器,vim是功能最强大的文本编辑器,能达到拜托鼠标效果。在Vi–vim–gvim中有命令行模式、插入模式(i)、低行模式(shift+:)。vim也有配置功能:/etc/vim/vimrc语句和set number语句。vim编译完后用Esc+shift+:+wq,w保存q退出 !强制退出。
然后是gcc编译器。gcc是一个GNU工具,也是一个交叉编译器。首先,从源文件到可执行文件要经过预处理,编译,汇编,链接几个步骤,但是对于不用的系统,即使文件内容相同,也不一定能都运行,例如电脑中编译的文件无法在手机上运行,所以要用交叉编译器在当前CPU平台下编译出其他CPU平台下可执行的代码。或者在宿主机上编译出能在目标机运行的代码,也就是将内核源码进行交叉编译。
预处理是头文件展开,宏替换和条件编译,编译是将预处理文件编译成汇编文件,汇编是将汇编文件编译成目标文件,链接则是建立符号表。若用“gcc -E加上文件名”,则只会预处理,用gcc -E hello.c >hello.i生成后缀为.i的文件对于头文件,若用“stdio.h”,则会现在当前目录查找,若找不到再到系统头文件目录查找,若用<stdio.h>,则会从系统头文件目录中进行搜索。若gcc加上“-I加上路径”,则会指定第三方路径来寻找。若用gcc加上-D,则是从外部定义宏;若用gcc加上-S,则生成汇编文件并且会检查语法错误;若用gcc加上-c,则会在汇编结束后停止;若用gcc加上-o,则可以重命名可执行文件;若用gcc加上-w,则会关闭警告,但是有时候警告是十分有用的,所以这条命令少用;若用gcc加上-O1,则会编译器优化。
这节课最重要的是在gcc中建立静态库或者动态库。库文件可以保存函数与变量,但是只能使用但是不能看见其实现,可以理解成将代码保存在库文件中,将库文件给别人,别人可以使用但是并不能看见库文件里的内容。静态库是在编辑阶段加载,后缀是.a,而动态库是在运行时加载,后缀为.so,加载就是将库文件的代码加载到源文件,所以动态库和静态库生成的可执行文件不同,也各有优缺点:(1)使用静态库生成的可执行文件大于动态库生成的可执行文件;(2)使用静态库生成的可执行文件难以升级,使用动态库生成的可执行文件易于升级;(3)使用静态库生成的可执行文件运行速度块,使用动态库生成的可执行文件运行速度慢;(4)使用静态库可执行文件里的代码容易部署,动态库难以部署。Linux库文件的存放路径也分为/lib:存放的系统运行所需要的库;/usr/lib:存放的是程序运行所需要的库。
制作静态库就是将需要保存的函数所在文件编译生成目标文件, 然后用ar制作工具来制作,代码是“gcc rcs 库名 目标文件名”,最后使用使用“gcc 源文件 -l 库名 -L 库存放的路径”。制作动态库就是:
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值