苏嵌//孙勇//2018.7.12

苏嵌                                                                                                                                   项目实战

学习日志                                       姓名: 孙勇                      日期:2018.07.12

 

 

 

 

今日学习任务

 

1、完成嵌入式Linux项目开发工具相关题目;

2、完成四条c语言编程题;

今日任务完成情况

 

(详细说明本日任务是否按计划完成,开发的代码量)

 嵌入式Linux项目开发工具题目完成,C语言编程作业完成。

今日开发中出现的问题汇总

 

1、编写计算器时出现警告类型冲突;

2、编写杨辉三角形时出现excepted ';' before 'a' 的错误,在数组中多加了个a。

3、字符串,指针方面的问题。

 

今日未解决问题

 

无 

今日开发收获

1、if else语句了解更深;

2、对数组的使用更加熟练;

3、对指针进行了复习回顾;

 

自我评价

 

(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)

 

 

 C语言基础知识掌握的还不是很好,编程时会出现很多小错误,检查错误时耗费的时间太久。对C语言还需要多加练习。

其他

 

 对Linux的一些基本命令和vim文本编辑器的使用更加熟练。

 

1、 嵌入式开发与传统开发的区别:是否有无操作系统的参与和移植,是否修改原码。传统开发耦合度较高,移植性差,嵌入式开发耦合度低,移植性高。

2、 ①软件开发人员不需要了解硬件; 
②提供了多任务机制; 
③提供了丰富的网络协议; 
④提供了很多的开源软件和工具;

3、 ⑤解决企业人才欠缺创新不足的问题。

4、  有应用开发工程师和系统开发工程师。应用开发工程师要求为1.精通一门语言2.熟悉系统操作。系统软件开工程师要求为1.精通c语言2.熟悉汇编3.理解操作系统的实现4.熟悉硬件工作原理。

5、 人工智能所需要使用的大数据需要嵌入式的支持。人工智能要求机器具有机器学习和深度学习的功能。机器学习需要大量有用数据的支撑,和对数据进行筛选和分析,这就使用到了大数据。而对于大数据中庞大数据进行处理,这就使用到了云计算的功能。

6、 CPU是中央处理器,GPU是图形处理器,DPU深度学习处理器,即AI芯片。TPU张量处理器。

7、 嵌入式操作系统有Vxworks,wince,ucossii,PalmOS、Symbian等。VxWorks具有实时性高,闭源,支持多任务间的通信等特点。Ucossii具有开源,多任务,实时性等特点,并且基本都是用c语言编写的。

8、 实时性是指在规定时间点内完成相应的指令,操作。VxWorks,ucossii具有实时性

9、 可以进行应用软件和系统软件的开发。

10、           Linux操作系统具有开源,模块化程度高,安全可靠性好,具有优秀的开发工具,可与Unix兼容的特点。

Linux是开源的,Unix是闭源的,UNIX是商业软件,而Linux是自由软件,免费、公开源代码。

11、           虚拟机为用户提供了一个可自由切换系统的平台,用户不需要经过重启去进入另一个操作系统。目前主流虚拟机有VMware和VPC等。

12、           POSIX是Linux和Unix共同遵守的协议,机制,GNU是Linux独有的协议,GPL是GNU通用公共许可证。

13、           有Ubuntu,红帽等。Ubuntu界面更炫酷,但对内存占用更大,红帽界面普通,但对内存要求不高。它们的库也不同。

14、           ①内核不同;

②Linux是开源系统,Windows是闭源系统;

③Linux是免费的,Windows是收费的。

15、           有普通文件,目录文件,设备文件,链接文件,管道文件,共享文件,堆栈文件

16、           Ls,clear,rm,mv,cp,mkdir,touch,tar,cd,

17、           用vim打开/etc/vim/vimrc文件对vimrc添加指令。 还有gedit,vi等编辑器。

18、           tar cvzf压缩  tar xvzf解压缩 

19、           可以编译c,c++,java等多种语言,还具有交叉编译的功能。EGCS PGCC

20、           交叉编译指在一个平台上生成另一个平台上的可执行代码,能解决编译环境和运行                环境不同的问题。由于目标环境中各种资源都相对有限,所以很难直接进行本地编译,因此需要交叉编译。

21、           预处理,编译,汇编,链接

预处理:1、头文件展开;2、宏替换;3、条件编译;

    编译 :1、语法检查,词法分析;

汇编 :将代码转换为机器码;

      链接:符号表的建立。

22、#include<stdio.h>是在系统目录下搜索stdio.h文件,#include”stdio.h”是先在当前目录下搜索,如果没有再到系统目录下搜索。

23、-I制定头文件库第三方搜索路径;-w 屏蔽所有警告信息;-Wall显示所有类型的警告;

-O3在-O2的基础上进一步优化,支持集成函数。

24、库文件是将函数封装在一起后供自己或他人调用的文件。用来保存函数或变量,只能使用函数或者变量,但不能看到具体实现。

25、库文件分为静态库和动态库。库文件存放在lib目录下。

26、静态库后缀为 .a,静态库一次性将所有函数全部封装好,利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,编译后的执行程序不需要外部的函数库支持,在编译过程中就已经被载入到可执行文件,缺点是程序过大,不利于升级,但容易部署;
    动态库后缀为.so动态库的代码是在可执行程序运行时才载入内存的,动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便,但不容易部署。
27、静态库:先写好各个.c文件,然后输入gcc -c xxx.c生成.o文件,接着用ar rcs libxxx.a xxx.o生成.a文件。最后输入gcc xxx.c -l xxx-L将库链接到程序使用。
    动态库:gcc -shared-fPIC -o xxx.so xxx.c生成动态库文件。gcc xxx.c./xxx.so -o xxx完成使用。
28、①启动被调试程序;
    ②让被调试的程序在指定位置停住;
    ③当程序被停住时,可以检查程序状态以及变量值。
29、run为运行,break为设置断点让程序停住,info break为显示断点,continue为跳过断点,finish可让子函数执行完。

30、 源文件越多,gcc命令行会越长;编译规则会加大gcc命令行的复杂度;使用gcc命令行编译程序时,会把没有修改的源程序再编译一次,影响编译效率,使用make会提高编译程序的效率。

31、三要素:目标体,依赖体,命令

    目标体:依赖体

(tab)  命令

执行顺序:先从第一行开始执行,如果所需的依赖体不存在则跳转到生成依赖体的那一行。

32、先建立总目录,在下面创建各个子目录,scripts目录,以及总控Makefile文件,接着在scripts目录下创建Makefile文件,在各个子目录下建立src目录以及makefile文件,最后将对应的.c文件存放到各个src目录中。

    总控Makefile:将各个子目录下的.o链接生成可执行文件;

    子目录makefile:将目录下.c文件编译生成.o文件;

   Scripts目录下Makefile:相当于c语言中的头文件,定义了一些变量。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值