• 2018-2019-1 20165209 《信息安全系统设计基础》第1周学习总结


    2018-2019-1 20165209 《信息安全系统设计基础》第1周学习总结

    教材学习内容总结

    • gcc把源程序翻译成可执行文件的四个阶段
      • 预处理gcc -E hello.c -o hello.i
      • 编译gcc -S hello.i -o hello.s
      • 汇编gcc -c hello.s -o hello.o
      • 链接gcc hello.o -o hello

    巧记:gcc -E/S/c hello.c -o hello.i/s/o

    注:一起编译可采用gcc test1.c test2.c -o test 或者gcc *.c -o test

    • 常用gcc 命令
    选项 文件名
    -E 仅执行编译预处理
    -S 将.c文件转换成汇编文件
    -c 仅编译,不连接
    -o 指定生成输出文件
    -I 指定头文件目录
    -L 指定库文件所在的目录名
    -l 制定程序要的链接的库
    • -I的使用: 当使用.h文件时,需要在hello.c加入#include "hello.h" ,保证声明和源文件相同。编译时gcc -I include(头文件所在文件夹) src/*.c -o bin/hello

    • 目录结构

      • src:存放.c文件
      • bin:存放调试后可执行文件
      • include:存放.h文件(头文件)
      • libs:存放动态库和静态库
      • Readme.md:阅读指南文件、使用指南
      • makefile:描述工程编译、链接功能
    • 静态库(libxxx.a)

      • 编译:gcc -c -I/头文件所在路径 add.c sub.c mul.c div.c生成.o文件,ar rcvs libmath.a add.o sub.o mul.o div.o生成静待库,gcc main.c -o main -I/头文件所在路径 -L. -lmath生成可执行文件
      • 优点:变异后执行程序不需要外部函数库支持
      • 缺点:一旦静态库改变,必须重新编译,编译成文件大。
    • 动态库(libxxx.so)

      • 编译:gcc -fpic -c -I/头文件所在路径 add.c sub.c mul.c div.c生成.o文件,gcc -shared -o libmath.so add.o sub.o mul.o div.o生成动态库,将libmath.so复制到目录/usr/lib中再输入gcc main.c -o main -I/头文件所在路径 -L. -lmath生成可执行文件。
      • 优点:可执行文件小,升级方便
      • 缺点:程序运行环境中必须提供相应的库。

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

    • 问题1:无法将物理机上的东西复制到虚拟机中
    • 问题1解决方案:点击设备共享剪贴板,选择双向
    • 问题2:编译出现“对main未定义的引用”
    • 问题2解决方案:使用头文件进行编译时gcc -I include src/*.c -o bin/main
    • 问题3:生成动态库后,移动文件后无法生成可执行文件
    • 问题3解决方案:在生成动态库后,输入gcc -o test main.c ./mymath.so,再输入./test即可运行。

    代码托管

    其他(感悟、思考)

    通过蓝墨云上老师的6个测试,才感受到代码的知识并不是光靠着教学视频、老师上课讲授、整理的笔记就能解决的。而是需要花费时间,进行自我实践。在实践过程中遇到问题并解决问题,才能真正理解知识本身,并记住掌握。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    • 计划学习时间:5小时

    • 实际学习时间:8小时

    参考资料

  • 相关阅读:
    使用百度字体编辑器删除不必要字体,减少字体文件体积
    使用npm安装webpack失败时,可能被墙要为cmd命令行设置代理
    让字体图标代替雪碧图,减少请求带宽
    隐藏浏览器原生的滚动条
    台式机安装CentOS7.6 Minimal ISO系统并增加图形化桌面
    像我这样笨拙地生活(廖一梅)--节选
    随心随意亦舒经典语录
    file / from install of XXX conflicts with file from package filesystem-XXX
    nginx代理php项目的websocket
    Redis4配置文件详解
  • 原文地址:https://www.cnblogs.com/tutu233/p/9694298.html
Copyright © 2020-2023  润新知