• 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的

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

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

  • 相关阅读:
    PHP实现邮件的自动发送
    为PostgreSQL的表自动添加分区
    django
    django的logging模块
    job
    python 类的方法带的self理解
    java
    choice_set的理解
    django
    proxy_next_upstream带来的坑和加载sticky模块
  • 原文地址:https://www.cnblogs.com/yangshuo123/p/6791443.html
Copyright © 2020-2023  润新知