2017-2018-1 20155311 《信息安全系统设计基础》第2周学习总结

2017-2018-1 20155311 《信息安全系统设计基础》第2周学习总结

课堂实践

  • 由于自己课下功夫下的不到位,所以导致课堂上第四个第五个实践没能按时完成。经过课下的努力学习。

实践4静态库测试

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
  2. 提交静态库生成和调用过程截图,要全屏,包含自己的学号信息
  • 解决方法

    创建静态库:

  • linux> gcc -c addvec.c multvec.c使用 gcc -c ···.c ···.c ···.c 把要将创建的静态库所包含的.c文件编译为.o文件。

  • linux> ar rcs libvector.a addvec.o multvec.o
    使用 ar rcs ···.a ···.o ···.o ···.o 由以上编译出来的.o文件创建静态库。(在我自己的操作中根据题意命名为mymath)

    创建可执行文件(即在在程序中使用静态库)

  • gcc -c main.c

  • gcc -static -o ··· main.o ./···.a
    通过以上的两行命令将创建的.a文件链接到main.o上,创建出一个可直接运行的文件(在我自己的操作中命名为prog11c)

实践5动态库测试

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
  2. 提交共享库生成和调用过程截图,要全屏,包含自己的学号信息
    解决方法:
  • linux>gcc -shared -fpic -o libvector.so addvec.c multvec.c
    对这行命令的理解:使用 gcc -shared -fpic -o ···.so ···.c ···.c 创建了一个共享的目标文件。
    创建可执行文件(即在在程序中使用动态库)

  • linux> gcc -o prog21 main2.c ./libvector.so
    使用 gcc -o ··· main.c ./··· 创建了一个可执行的文件(在我自己的操作中命名为prog4s)

myod测试

1.打开一个文件vim 5311.c
输入编译出来的函数

#include<stdio.h>
#include<stdlib.h>
int main()
{
    char ch;
    FILE *fp1;
    if((fp1=fopen("hello.c","r"))==NULL)
    {
        printf("ss");
        exit(0);
    }

    while((ch=fgetc(fp1))!=EOF)
    {
        printf("%x %c ",ch,ch);


    }

    fclose(fp1);
 return 0;
}

2.编译该文件gcc 5311.c

3.od -tx -tc hello.c

4.sudo 5311.c 给予权限

5../a.out

原文地址:https://www.cnblogs.com/gaoziyun11/p/7617092.html