首页 > 技术文章 > 答案摘取

20135213lhj 2015-10-08 20:49 原文

第三周:

  1. 填空:实验楼环境中所有的默认系统用户名和密码均为 (shiyanlou                )。
  2. 填空:Linux Bash中,Ctrl+a快捷键的作用是(将光标移至输入行头,相当于Home键)。
  3. 判断:Linux Bash中, man printf和man 1 printf 功能等价。 ok
  4. 填空:在 Linux 里面可以使用使用(groups)命令知道自己属于哪些用户组。
  5. 填空:在 Linux 里面可以使用使用(chmod)命令修改文件的权限。
  6. 填空:Linux中没有C盘,D盘,其文件系统的目录是由(FHS)标准规定好的。
  7. 判断:Linux Bash中,cd - 命令可以切换到'home'目录。 x     应该是cd ~ , cd -切换到上一个目录
  8. 判断:Linux Bash中,强制删除test文件的命令是(rm -f test )。
  9. 判断:Linux Bash中,cat -n 和 nl 命令功能等价。ok
  10. 判断:Linux Bash中,source 和 . 命令功能等价。 ok
  11. 填空:Linux Bash中,查找home目录中前天创建的文件的命令是(find ~ -ctime 2)。 区分 2 +2 -2 的意义, 三种时间参考学姐李冰清的研究
  12. 判断:Linux Bash中,使用tar命令把home目录打包成home.tar的命令是( tar -cf home.tar  ~)
  13. 填空:Linux Bash中,zip命令使用(-e)参数可以创建加密压缩包。
  14. 判断:Linux Bash中,df和 du 命令功能等价。x
  15. 填空:Linux Bash中,ls . | sort 命令的功能是( 显示当前目录内容并排序            )
  16. 填空:Linux Bash中,使用grep查找当前目录下*.c中main函数在那个文件中的命令是(  grep main *.c )
  17. 填空:Linux Bash中,使用wc统计hello.c共有几行代码的的命令是( wc -l hello.c                      )
  18. 判断:col 命令的-h参数可以将Tab换成对等数量的空格建。x  , 空格换tab
  19. 填空:Linux Bash中,把ls命令显示当前目录的结果存入ls.txt的命令输出重定向命令是(ls > ls.txt)
  20. 填空:Linux Bash中,(tee   )命令可以同时重定向到多个文件。

 

 

 

第四周:
man -k 填空: 数据结构中有线性查找算法,C标准库中没有这个功能的函数,但Linux中有,这个函数是(lfind或lsearch)
cheat 填空:To list the content of /path/to/foo.tgz archive using tar ( tar -jtvf /path/to/foo.tgz )
find 填空:查找当前目录下所有目录的find命令是(find . -type d)
grep 填空:查找宏 STDIN_FILENO 的值的命令是(grep -nr XXX /usr/include)
CH01填空:计算机系统中的所有信息都是位串表示的,所谓(信息)就是位+上下文。
CH01填空:存储器层次结构的主要思想是上层存储器作为下层存储器的(高速缓存)。
CH01填空:操作系统中最基本的四个抽象是(虚拟机、进程、虚拟存储器、文件)。
CH07填空:链接器的两个主要任务是(符号解析和重定位)。
CH07选择:教材p449中 swap.c中的bufp1 是( A ) A 全局符号 B外部符号 C本地符号 D以上都不对
CH07 判断:C语言中,全局变量是强符号。(X)
CH07 填空:(加载器)将可执行文件的内容映射到存储器,并运行这个程序。
CH07 选择:Linux中,反汇编.text节中的二进制指令使用的工具是(d)A ar B strings C readelf D objdump

针对如下代码:


1. 在vi中,查看scanf和printf man pages(帮助文档)的命令分别是?(2分)
K 3K
2. 编译和运行以上代码的命令(2分) 
gcc *.c -o main 
./main
3. 使用GDB调试以上代码:编译代码的命令是?main.c中如何给main函数设置断点?如何在第六行设置断点?(3分)
gcc -g *.c -o main 
b main 
b 6
4. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?(3分)
gcc -c add.c sub.c mul.c div.c
ar rcvs libmymath.a add.o sub.o mul.o div.o

gcc main.c -o main -L. -lmymath (or gcc main.c ./libmymath.a -o main)

5. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?(4分)
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

libmymath.so 要拷贝到/lib or /usr/lib

6. 写出编译上面代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.(4分)

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

推荐阅读