zoukankan      html  css  js  c++  java
  • 20155309南皓芯第二周课堂实践

    第一题
    0. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号

    1. 用Vi输入图中代码,并用gcc编译通过
    2. 在Vi中使用K查找printf的帮助文档
    3. 提交vi编辑过程截图,要全屏,包含自己的学号信息

    首先我们先在虚拟机cd到自己当前的文件
    然后利用vi hello.c继续编写代码即可
    分别将那些代码vi到自己目录之下
    然后利用gcc *.c编译即可

    第二题

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

    第二题主要考察的是gcc

    第三题

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

    首先我们需要输入命令看该电脑是否安有gdb
    即 rpm -qa |grep gdb然后发现并没有安装,那么我们需要对gdb进行安装
    首先我们要写一个学号的for循环
    并且记住自己所写的行数
    之后输入gcc *-0 main的命令 然后输入 gdb main 再用if 插入行数即可

    出现的问题,在选取文件上出现了问题,后来经过提示之后,改正了。

    第四题

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
    2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
      所谓的静态库就是将自己文件的后缀调整为其他,而不能够让其他人知晓的做法。

    第一步要先将c文件转换成o文件
    静态链接库的生成:
    gcc -c 文件名.c ar rcsv libxxx.a xxx.o;

    静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx

    然后再实现命令

    ar cr math.a add.o sub.o mul.o div.o
    gcc main.c ./math.a -o main
    

    第五题

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库

    2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

    3. 动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成。

    4. 动态链接库的名称有别名(soname), 真名(realname)和链接名(linker name)。别名由一个前缀lib,然后是库的名字,再加上一个后缀“.so”构成。真名是动态链接库真实名称,一般总是在别名的基础加上一个小版本号,发布版本等构成。除此之外,还有一个链接名,即程序链接时使用的库的名字。

    3.在动态链接库安装的时候,总是复制文件到某个目录下,然后用一个软连接生成别名,在库文件进行更新的时候,仅仅更新软链接即可。

    共享库的生成

    gcc -fPIC -c add.c sub.c mul.c div.c
    gcc -shared -o libmymath.so add.o sub.o mul.o div.o
    

    共享库的使用

    gcc -o main main.c -L. -lmymath
    

    第六题

    1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

    2 提交Make过程截图,要全屏,包含自己的学号信息

    关于makefile的介绍

    make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。

    make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。

    makefile文件编写规则:

    目标文件 :由make创建,通常是目标文件或可执行文件

    依赖文件 :创建目标体所依赖的文件

    运行命令 :创建每个目标体时需要的运行命令,必须以tab键开头,格式为:目标文件:依赖文件列表 [tab键]各目标体运行命令(注意不是空格)

    使用make的格式:make目标文件
    注意一定要用tab 键
    首先建立一个makefile的文件
    vim makefile
    然后在里面将前面的代码敲入

    testmymath: main.o add.o sub.o mul.o div.o

    gcc main.o add.o sub.o mul.o div.o -o testmymath

    main.o: main.c head.h

    gcc -c main.c

    add.o: add.c head.h

    gcc -c add.c

    sub.o: sub.c head.h

    gcc -c sub.c

    mul.o: mul.c head.h

    gcc -c mul.c

    div.o: div.c head.h

    gcc -c div.c

    之后用make运行

    再用./testmymath即可

  • 相关阅读:
    达叔系列——神经网络编程基础
    win10安装pytorch——前面有坑,快跳进去鸭
    Python基础(六)——面向对象编程
    Python基础(五)——闭包与lambda的结合
    Python基础(四)——迭代器/对象,生成器
    Mysql优化(出自官方文档)
    Mysql优化(出自官方文档)
    Scala语言笔记
    Scala语言笔记
    Scala语言笔记
  • 原文地址:https://www.cnblogs.com/nhx19970709/p/7613628.html
Copyright © 2011-2022 走看看