2014025678《嵌入式程序设计》第2周学习总结(2017-04-22 14:32)

教材学习内容总结
静态库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。创建及使用静态库的命令如下:

gcc -c hello.c -o hello.o
ar -rc libhello.a hello.o
gcc star.c libhello.a -o mystar
./mystar动态库
动态库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。创建及使用动态库的命令如下:

gcc -c -fpic hello.c
gcc -shared -s -o libhello.so hello.o
sudo cp libhello.so /usr/lib6/
//在运行可执行程序之前,需要注册动态库的路径名。其方法有几种:修改 /etc/ld.so.conf 文件,或者修改 LD_LIBRARY_PATH 环境变量,或者将库文件直接复制到 /lib 或者 /usr/lib 目录下(这两个目录为系统的默认的库路径名)。
gcc -lhello star.c -o mystar
ldd mystar
//注册了动态库之后,上述两条命令才能执行成功,libhello.so才能在 /usr/lib/ 中
./mystar

-E:只对文件进行预处理。
-S:只生成一个后缀名为.s的汇编语言文件,同样不会生成可执行的程序。
-c:告诉GCC仅把源程序编译为目标代码而不做链接的工作。
-v:在屏幕上显示出目前正在使用的GCC版本信息。
GNU make 的主要预定义变量
1.GCC 编译器的名称,默认值为gcc
2.CFLAGSC 编译器的选项。
3.CPPC 预编译器的名称,默认值为$(CC)
4.CPPFLAGSC 预编译的选项
教材学习中的问题和解决过程

依然没有gcc,又再次重新安装,
在安装时选择应用程序列表全选和开发列表中全选,然后进行安装才有gcc,
不然gcc一直是不好使的状态。

代码调试中的问题和解决过的问题

本周对gcc,Makefile进行了简单的学习,相对来说Makefile接受的比较快,使用gcc编译器编译C语言程序文件生成可执行文件的过程,是要经历四个相互关联的步骤:预处理、编译、汇编和链接,在练习gcc的时候错误也总是出现,但是在同学和老师的指导下还是很快的解决了这些问题。在实验楼也简单的复习了一下上课学的知识点。

再次安装后的软件是ok的

课后作业中的问题和解决过程

由于电脑的软件,所以重新组装后,上课的代码再复习了一遍,通过问同学,已经都处理完了所有的问题
还有就是有的时候时间一长便忘记老师讲的东西,而且如果上课的时候跟不上老师的速度,那么课后作业的完成情况也是非常的不好
参考资料
《嵌入式应用程序设计》学习指导

原文地址:https://www.cnblogs.com/yangshuo123/p/6791443.html