zoukankan      html  css  js  c++  java
  • 2018-2019-1 20165330 《信息安全系统设计基础》第一周学习总结

    学习内容总结

    gcc编译器
    1. 命令格式:gcc [格式] [文件名]
    2. 常用编译选项:
      • -E:仅执行编译预处理
      • -S:将C代码转换为汇编代码
      • -c:仅执行编译操作,不进行连接操作
      • -o:指定生成的输出文件
      • -I:指定头文件目录
      • -l:指定程序要链接的库
      • -L:指定库文件所在的目录名
    3. 编译过程:
      • 预处理: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
    4. 多模块编译:gcc *.c -o hello
    静态库和动态库的生成与调用方法
    1. 静态库
      • 生成.o文件:gcc -c -I/头文件所在路径 add.c sub.c mul.c div.c
      • 生成静态库:ar rcvs libmath.a add.o sub.o mul.o div.o
      • 生成可执行文件:gcc main.c -o main -I/头文件所在路径 -L. -lmath
    2. 动态库
      • 生成.o文件:gcc -fPIC -c -I/头文件所在路径 add.c sub.c mul.c div.c
      • 生成动态库: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
    • 共享库
      • 创建一个共享的目标文件:
        gcc -shared -fpic -o mymath.so add.c sub.c mul.c div.c
      • 创建可执行目标文件:
        gcc -o link main.c ./mymath.so
      • 运行link:./link
    makefile基本原理及语法规范
    1. 格式:vim Makefile
    2. 编译:make
    3. 运行:./文件名
    4. 注意:在vim makefile中enter回车后在新一行的开头先用Tab键
    gdb调试

    参考C编译: 使用gdb调试

    • 编译:`gcc -g -I/头文件所在路径 main.c -o main
    • 进入调试:gdb main
    • 查看某行程序:(gdb) list n
    • 查看main.c中的内容:(gdb) list main.c:1
    • 运行程序:(gdb) run
    • 在某行设置断点:(gdb) break n
    • 查找帮助:(gdb) help
    • 退出gdb:(gdb) quit

    测试中遇到的问题及解决方法

    1. 在vi测试中遇到error
      image

    解决办法:发现当前已在main.c的目录下,-I空格后继续输入目录已多余,而且当前文件夹没有bin文件,所以之后我跳到总的大目录下成功

    1. 在进行gdb调试时出现
      image

    解决办法:原因是在源文件main.c中我并没有提前声明i<c中c的数值,导致不能读取断点设值

    1. 在进行makefile时出现
      image

    解决方法:原因是所在目录下没有math.o文件,在进行vi makefile时错把main.o输成了math.o

    1. 在进行共享库测试时,按照老师所发的视频我并没有成功调试出来,一直显示 不存在-lmymath目录

    解决方法:一直没有搞懂怎么将文件libmath.so复制到目录/usr/lib中,但是我在网上发现了学姐用的另一种方法进行共享库的生成与调试:首先创建一个共享的目标文件:gcc -shared -fpic -o mymath.so add.c sub.c mul.c div.c,接着创建可执行目标文件:gcc -o link main.c ./mymath.so,最后运行link:./link

    1. 在进行git时出现错误提示fatal: 拒绝合并无关的历史

    解决办法:通过参考git配置过程中fatal:拒绝合并无关的历史,输入其中的两条命令git成功

    代码托管

    image

  • 相关阅读:
    Android 代码判断是否获取ROOT权限
    Tomcat环境变量
    Ubuntu Android环境搭建
    java 取出文本文件中的空行
    Step by Step for configuration of sending customize IDOC/自定义IDOC发送配置
    Oracle SQL语句执行完整过程:
    Continue Posting, Keep Fighting
    Moto G 通话没声音
    Android 手机技巧
    Digg Reader 登录不了,原来如此
  • 原文地址:https://www.cnblogs.com/besty-zyx/p/9693897.html
Copyright © 2011-2022 走看看