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

教材学习内容总结

  • 编译:gcc [选项] [文件名]

选项参数表

参数 对应功能
-E 仅执行编译预处理
-S 将.c代码转换为汇编语言代码
-c 仅执行编译操作,不进行连接操作
-o 指定生成的输出文件
-I (大写) 指定头文件目录
-l 指定程序要连接的库
-L 指定库文件所在的目录名

注意:-I:我们平时在使用时,-I要紧跟头文件所在的地址目录: gcc -E/-S/-c/-o -I 头文件所在目录 src/ *.c bin/ *

  • 编译过程:

1.预处理:.c文件变成.i文件
gcc -E -I 头文件所在目录 src/ *.c -o bin/ *.i

2.编译:.i文件变成.s文件(汇编程序)
gcc -S -I 头文件所在目录 src/ *.i -o bin/ *.s

3.汇编:.s文件变成.o文件
gcc -c -I 头文件所在目录 src/ *.s -o bin/ *.o

4.链接:.o文件变成可执行文件
gcc *.o -o 文件名

也可直接输入gcc *.c -o *直接编译成可执行文件

-多模块一起编译:
gcc test_a.c test_b.c -o test 或 gcc *.c –o test
也可分开编译
第一种方法编译时需要所有文件重新编译;
第二种只重新编译修改的文件,未修改的不用重新编译。

  • 项目目录结构
文件夹名 对应文件
src 存放.c文件
include 存放.h文件也就是头文件
bin 存放项目调试之后的可运行文件
libs 存放动态库和静态库文件
Readme.md 阅读指南文件,包括如何使用这个程序等
makefile 描述了整个工程的编译、链接等功能,“自动化”
  • 静态库

步骤:
1、输入gcc -c -I/头文件所在路径 add.c sub.c mul.c div.c生成.o文件
2、输入ar rcvs libmath.a add.o sub.o mul.o div.o生成静态库
3、输入gcc main.c -o main -I/头文件所在路径 -L. –lmath生成可执行文件main

注意:-l参数用来指定程序要链接的库,-l参数紧接着就是库名。
-L参数跟着的是库文件所在的目录名。
gcc会在静态库名前加上前缀lib,然后追加扩展名.a得到的静态库文件名来查找静态库文件。

  • 动态库

步骤:
1、输入gcc -fPIC -c -I/头文件所在路径 add.c sub.c mul.c div.c生成.o文件
2、输入gcc -shared -o libmath.so add.o sub.o mul.o div.o生成动态库
3、将文件libmath.so复制到目录/usr/lib中后,再输入gcc main.c -o main -I/头文件所在路径 -L. lmath生成可执行文件main

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

Q:自己的虚拟机vim编辑器中Backspace键及方向键无法使用

A:自己查找得知,自己安装的编辑器版本不是最新版本,输入sudo apt-get remove vim-common
sudo apt-get install vim
以安装最新的vim编辑器

代码托管

其他(感悟、思考等,可选)

本周是第一周学习,俗话说良好的开端是成功的一半,自己根据娄老师的实验一步一步来,巩固了本周的学习,理论和实践相结合,可以更有利于知识的融会贯通。

学习进度条

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

参考资料

  • 《深入理解计算机系统V3》学习指导

转载于:https://www.cnblogs.com/20165203-xyx/p/9728474.html

2018-2019 20165203 《信息安全系统设计基础》第一周学习总结相关推荐

  1. 信息安全系统设计基础第一周学习总结

    学习计时:共15小时 读书:1 代码:10 作业:13 博客:1 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令 ...

  2. 20135323符运锦---信息安全系统设计基础第一周学习总结

    学习计时:共15小时 读书:1小时 代码:8小时 作业:4小时 博客:2小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用Li ...

  3. 20135304刘世鹏——信息安全系统设计基础第一周学习总结

    第一节 Linux系统简介 一.Linux是一个操作系统 1. Linux 本身只是操作系统的内核.内核是使其他程序能够运行的基础. 它实现了多任务和硬件管理,用户或者系统管理员交互运行的所有程序 实 ...

  4. LINUX信息安全系统设计基础第一周学习总结

     Linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 二.Linux 与 Window ...

  5. 20135306-信息安全系统设计基础第一周学习总结

    第二周(9.14-9.20): 学习计时:共14小时 读书:2h 代码:4h 作业:4h 博客:4h 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3 ...

  6. 20135219洪韶武——信息安全系统设计基础第九周学习总结

    信息安全系统设计基础第九周学习总结 学习时间:7小时 学习内容:课本第十章 一.第十章知识点(1~6) 第一部分:文件的概念及相关操作 1.每个unix文件都是一个m字节的序列:所有I/O设备如网络. ...

  7. 信息安全系统设计基础第二周学习总结

    信息安全系统设计基础第二周学习总结 学习目标 1. 熟悉Linux系统下的开发环境    2. 熟悉vi的基本操作    3. 熟悉gcc编译器的基本原理    4. 熟练使用gcc编译器的常用选项 ...

  8. 信息安全系统设计基础第九周学习总结

    第十章 系统级I/O的实践 学习目标: 代码阅读理解: 1.编译运行代码 2.使用man学习理解相关系统调用, 理解参数.返回值的含义 3.会用grep -nr xxx /usr/include 查宏 ...

  9. 20135219洪韶武——信息安全系统设计基础第四周学习总结

    信息安全系统设计基础第四周学习总结 学习任务:教材第三章 学习时间:10小时 学习内容 一.教材知识梳理 1.程序编码与机器级代码 程序编码: gcc编译器,将源代码转化成可执行代码,C预处理器-汇编 ...

  10. 20135203齐岳 信息安全系统设计基础第四周学习总结

    20135203齐岳 信息安全系统设计基础第四周学习总结 学习计时:共17小时 读书:10 代码:1 作业:3 博客:3 一.学习目标 理解逆向的概念以及 掌握X86汇编基础,能够阅读(反)汇编代码 ...

最新文章

  1. 【数据挖掘】神经网络 后向传播算法 向前传播输入 案例计算分析 ( 网络拓扑 | 输入层计算 | 隐藏层计算 | 输出层计算 )
  2. Divan and bitwise operations 异或,同或,组合数学(1500)
  3. tfs 内网和外网切换的方法。
  4. js 可以做什么东西_Deno需要做什么才能取代Node.js?
  5. phpcms的一些问题 乱码,安装
  6. 获取Repeater中Footer/HeaderTemplate 中的控件
  7. 腾讯体育php面试题,腾讯php程序员面试题目及答案分享!
  8. matlab 神经网络设计与应用,MATLAB 神经网络设计与应用(最新版)
  9. 【Pycharm】笔记内容010:记录Pycharm报错“Can not find 程序所在目录 或者Can not run program...“的问题解决
  10. rabbitmq高可用集群搭建踩坑
  11. WSO2一般使用教程
  12. win10打开计算机代码,Win10开不了机错误代码0xc0000428三种解决方法
  13. wifi营销小程序源码+搭建教程
  14. linux 批量convert,使用convert来批量处理图片
  15. 【总结】1438- 你想知道的前后端协作规范都在这了
  16. 计算机软件水平考试分类程序员,历年计算机软件水平考试程序员部分真题
  17. Aspose.Words模板创建Word【一】
  18. R语言——Error in plot.window(...) : ‘xlim‘值不能是无限的
  19. ES dense_vector 计算余弦相似度
  20. Java JDK 1.8 新特性 Stream流

热门文章

  1. 【Qt开发】QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent
  2. 第十章练习题----2
  3. HDU 2072(单词数)题解
  4. arcgis server for .NET学习转载5
  5. C#获取屏幕分辨率(大小)
  6. openstack服务编排
  7. Jenkins 部署vue到服务器
  8. 2017视频监控行业应用趋势与市场发展分析
  9. 构建微服务:Spring boot 入门篇
  10. 轻松获取LAMP环境的配置参数