2017-2018-1 20155311 《信息安全系统设计基础》第2周学习总结
2017-2018-1 20155311 《信息安全系统设计基础》第2周学习总结
课堂实践
- 由于自己课下功夫下的不到位,所以导致课堂上第四个第五个实践没能按时完成。经过课下的努力学习。
实践4静态库测试
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
- 提交静态库生成和调用过程截图,要全屏,包含自己的学号信息
-
解决方法
创建静态库:
-
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动态库测试
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
- 提交共享库生成和调用过程截图,要全屏,包含自己的学号信息
解决方法:
-
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