zoukankan      html  css  js  c++  java
  • 20165324 《信息安全系统设计基础》 第一周

    20165324 《信息安全系统设计基础》 第一周

    第一章计算机系统漫游知识点学习

    gcc编译器与静、动态库

    • 命令格式: gcc [选项] [文件名]及常见编译选项:
      1. -E:仅执行编译预处理。
      2. -S:将C代码转换为汇编代码。
      3. -c:仅执行编译操作,不进行连接操作。
      4. -o:指定生成输出文件。
      5. -I(大写i):指定头文件目录。
      6. -l:指定程序要链接的库。
      7. -L:指定库文件所在的目录名。
    • 编译过程:

    • 具体代码为:
    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 hello.c -o hello
    
    • 一个项目的目录结构:

    • 静态函数库:名字一般为libxxx.a,整合整个函数库的所有数据进目标代码中,文件较大。

    • 动态函数库:名字一般为libxxx.so,程序运行环境必须提供相应的库。

    调试器gdb

    • 使用-g编译选项的gcc命令来编译源程序。如:gcc -g test.c -o test
    • 通过gdb test来启动gdb。gdb调试的是可执行文件。
    • 使用介绍:

    Makefile

    • Makefile关系工程的编译规则,好处是自动化编译。
    • 书写规则:targets为文件名,command为命令行,必须以[Tab键]开头,prerequisites为目标所依赖的文件(目标)。
    targets: prerequisites
        command
    
    • 变量的使用:定义一个变量,需要在一行的开始定义这个变量(一般大写),后面跟一个-号,=号后面即为设定的变量值。使用变量,用一个$符号来引用变量,变量名需要放在$后的()里。如:
    objects=main.o add.o sub.o div.o mul.o  
    $(objects)
    

    蓝墨云任务

    任务一:

    1. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
    2. 用Vi输入图中代码,并用gcc编译通过
    3. 在Vi中使用K查找printf的帮助文档
    4. 提交vi编辑过程截图,要全屏,包含自己的学号信息
    5. 把代码推送到代码托管平台
    • 任务截图:

    任务二:

    1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码
    2. 生成的可执行文件中要有自己的学号
    3. 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
    4. 代码推送到代码托管平台
    • 任务截图

    任务三:

    1. 用gcc -g编译vi输入的代码;
    2. 在main函数中设置一个行断点;
    3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点;
    4. 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息;
    5. 代码推送到代码托管平台;
    • 任务截图

    任务四:

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
    2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    3. 代码推送到代码托管平台;
    • 任务截图:

    任务五:

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
    2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息;
    3. 代码推送到代码托管平台;
    • 任务截图:

    任务六:

    1. 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
    2. 提交Make过程截图,要全屏,包含自己的学号信息
    3. 代码推送到代码托管平台;
    • 任务截图

  • 相关阅读:
    Python 多线程,文件io
    Python map/reduce函数式编程
    LeetCode 77 组合
    LeetCode 198 打家劫舍
    LeetCode 138 复制带随机指针的链表
    LeetCode 445 两数相加 II
    LeetCode 2 两数相加
    LeetCode 215 数组中的第K个最大元素
    和为S的两个数字
    数组中重复的数字
  • 原文地址:https://www.cnblogs.com/20165324hcj/p/9693662.html
Copyright © 2011-2022 走看看