博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20165324 《信息安全系统设计基础》 第一周
阅读量:5877 次
发布时间:2019-06-19

本文共 1627 字,大约阅读时间需要 5 分钟。

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

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

gcc编译器与静、动态库

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

1290756-20180928154134659-974981072.png

  • 具体代码为:
gcc -E hello.c -o hello.igcc -S hello.i -o hello.sgcc -c hello.s -o hello.ogcc hello.o -o hello//或者直接输入:gcc hello.c -o hello
  • 一个项目的目录结构:

1290756-20180928154204708-474474278.png

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

1290756-20180928154236212-627480166.png

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

1290756-20180928154245264-507685977.png

调试器gdb

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

1290756-20180928154319062-1541681915.png

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. 把代码推送到代码托管平台
  • 任务截图:

1290756-20180923202649740-1230722952.png

1290756-20180923202656700-1532950060.png

1290756-20180923202754650-145623319.png

1290756-20180923203306964-1119802297.png

任务二:

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

1290756-20180923210229776-1380351891.png

任务三:

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

1290756-20180923215809061-2083127328.png

任务四:

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

1290756-20180924105819841-1963438567.png

任务五:

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

1290756-20180924111607462-1189142722.png

任务六:

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

1290756-20180924131213304-1458743112.png

转载于:https://www.cnblogs.com/20165324hcj/p/9693662.html

你可能感兴趣的文章
linux 下RTL8723/RTL8188调试记录(命令行)【转】
查看>>
SpringMVC案例1——对User表进行CRUD操作
查看>>
看雪CTF第十四题
查看>>
[Contiki系列论文之1]Contiki——为微传感器网络而生的轻量级的、灵活的操作系统...
查看>>
Android 网络编程 记录
查看>>
微软同步发行Windows 10和Windows 10 Mobile系统更新
查看>>
Maven 传递依赖冲突解决(了解)
查看>>
Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二)
查看>>
[Spark][Python]Spark Join 小例子
查看>>
form表单下的button按钮会自动提交表单的问题
查看>>
springBoot介绍
查看>>
Intellij IDEA 快捷键整理
查看>>
Redis 通用操作2
查看>>
11. Spring Boot JPA 连接数据库
查看>>
洛谷P2925 [USACO08DEC]干草出售Hay For Sale
查看>>
MapReduce工作原理流程简介
查看>>
那些年追过的......写过的技术博客
查看>>
小米手机解锁bootload教程及常见问题
查看>>
Python内置函数property()使用实例
查看>>
Spring MVC NoClassDefFoundError 问题的解决方法。
查看>>