博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018-2019-1 20165209 《信息安全系统设计基础》第1周学习总结
阅读量:4363 次
发布时间:2019-06-07

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

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即可运行。

代码托管

1042924-20180924001103882-962450295.png

其他(感悟、思考)

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

学习进度条

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

  • 实际学习时间:8小时

参考资料

转载于:https://www.cnblogs.com/tutu233/p/9694298.html

你可能感兴趣的文章
语句- for () 循环语句-迭代法
查看>>
jQuery.动画
查看>>
suoi16 随机合并试卷 (dp)
查看>>
五 : springMVC拦截器
查看>>
数据结构七大排序
查看>>
你真的了解iOS的深浅拷贝吗?
查看>>
对症下药,找到Visual Studio每次编译都提示不是最新的根本原因
查看>>
19 反射
查看>>
MTK Android Driver :Camera
查看>>
Servlet含义与工作原理
查看>>
内容页访问母版页页控件的方法
查看>>
BZOJ4825 单旋
查看>>
博客搬家到https://laowei.wang
查看>>
hdu 2196 Computer(树形DP)
查看>>
Django生命请求周期
查看>>
深入Asyncio(十二)Asyncio与单元测试
查看>>
python正则实现简单计算器
查看>>
网络状况判断
查看>>
SET || BZOJ 1588: [HNOI2002]营业额统计 || Luogu P2234 [HNOI2002]营业额统计
查看>>
SQL Server 更改隔离级
查看>>