首页 > 技术文章 > 2017-2018-1 20155307 《信息安全系统设计基础》第2周学习总结(含课堂测试五)

zhuanyedajiesanshinian 原文

课堂内容

5.共享库

要求:1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
2.提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

运行gcc -shared -fpic -o mymath1.so add.c sub.c mul.c div.c,再接着输入gcc -o mymath2 main.c ./mymath1.so指令,以建立动态库

myod

···#include<stdio.h>

include<stdlib.h>

define N 500

main()
{
int count=0,num=0;//定义两个变量,一个用于计数
FILE *fp;//定义一个文件
char word[N],name[N];
char str;
loop:printf("name:");
scanf("%s",&name);//读取文件的名称
if((fp=fopen(name,"r"))NULL)//如果文件打开不为空,则往下运行
{
printf("找不到此文件 请重新enter ");
goto loop;
}
while(fgets(word,N,fp))//读取文件中的信息,按行读取
{
while(1)
{
printf("%c ",word[count]);//换码符' ',将光标移到最接近8的倍数的位置,使得后面的输入从此开始.如果所有的数据都紧跟在制表符后面输出。
if((count+1)%16
0||word[count+1]'')
{
printf(" ");
while(1)
{
printf("%x ",word[num]);//%意思是说读入16进制的整数
num++;
if(num%16
0||word[num]'')//要是到了十六了,或者是根本就为空,那么就换行
{
printf(" ");
break;
}
}
}
count++;
if(word[count]
'') break;
}
}
fclose(fp);//关闭文件
exit(0);
}
···
以上是我myod的代码

编程过程中的问题:

比较主要的问题是我的windows和Linux的系统无法互相复制粘贴,我结合自己查找和询问同学,总结了以下几种方法:
1.修改Oracle VM VirtualBox管理器的设置,把“高级”的共享剪贴板改成双向;
2.下载VMware,安装后即可;
3.登录微信网页版,使用手机端和网页端传输;
我用了以上三种方法,没有一个好用的,还好张旭同学给我在虚拟机内部点击了一个“设备”的“安装增强功能0选项,我下载了之后发现依旧不好使,所以我现在也没有解决跨系统复制粘贴的问题,而且虚拟机还连不上网,我也没有解决。

最后终于解决了,是把“高级”选项中的共享剪贴板改成从主机到虚拟机,两个都改成这样就好了。

推荐阅读