三、Linux编程基本使用知识。
三.1、命令和shell
1)编写一个脚本,统计一个目录下面所有C代码的行数。(2分)
2)编写一个sed脚本,去除HTML文件中的HTML标记。(2分)
3)编写一个脚本获得当前系统eth0的IP地址。(2分)
4)编写一个脚本以交互的方式,进行DNS的设定。(2分)
5)使用ls命令编写一个脚本,实现ls -R,递归列出当前目录下的所有目录、文件。(2
分)
6)-----------------------------------------------------------
在一个目录下,找soft-link files,用下面的命令,原理是可行的,但无法操作,
该如何解决?要2种方法。(2分)
ls -l | grep ->
7)-----------------------------------------------------------
如何把标准错误输出,重定向到标准输出上。(2分)
8)-----------------------------------------------------------
我们的系统中的软件包是使用RPM管理的。要求下面的问题写出shell命令和运行结果。(
5分)
如何知道系统中安装了几个软件包。
如何知道系统中安装了哪几类(group)软件包。
如何知道kernel软件包的简述。
如何知道kernel软件包的Changelog。
如何知道kernel软件包有几个文件。
如何知道kernel软件包安装后有多大。
三.2、编辑工具的使用。(各2分)
1)如何使用vi进行块拷贝、粘贴、删除的操作
2)如何设置Tab的长度,以及自动缩进的长度
3)如何使用tag进行代码阅读
4)如何在1~10行,有确认的进把所有的RedHat改为RedFlag
5)在SourceNavigator中,如何跳到一个变量的声明处?如何得知光标当前的位置在那
个函数体内?
三.3、编译器与调试器。(各2分)
1)如何使用gcc得到宏展开的中间代码
2)如何通过gcc在命令行中传入宏定义
3)在那一级优化的情况下,内联函数才真正的内联到代码中
4)gdb的watch命令如何使用,有何缺点
5)gdb中使用什么命令可以显式调用的栈帧,如何查看某个栈帧上的局部变量
6)如何使用gdb调试多进程
7)如何使能/禁止core dump?
三.4、库。(各2分)
1)如何知道XSetIMValues这个符号在那个X的库文件中
2)如何读取C++的符号名,更具可读性
3)请解释动态库的soname概念
4)解释在链接时rpath选项的含义
三.5、Makefile。(10分)
如果有一个简单的Test项目目录如下:
# tree Test
Test
|-- common.h
|-- main.cpp
|-- test.cpp
`-- test.h
1)使用wildcard、patsubst函数编写一个C++项目的Makefile文件
2)使用automake、autoconfig编写一个支持configure选项的configure.in脚本
三.6、CVS。(10分)
1)如果一个CVS项目中,甲添加了一个子目录模块,那么乙在update时是否会自动检
出这个新添加的子模块?如果不能,那么你有什么好的解决方案?
2)如何在一个CVS项目中添加一个二进制文件,这个二进制文件可以进行增量的版本管
理吗?
3)如何检出标记(tag)为milestone-1的版本,如何创建以milestone-1为基础的分支
milestone-1-b1,并如何把分支的修改合并到milestone-1的主分支上
三.7、Linux/GNU编程基本知识
1、-----------------------------------------------------------
Linux2.4.x有多少种类型的设备文件?分别写出来。(2分)
2、-----------------------------------------------------------
glibc动态库的搜寻次序是什么?(2分)
glibc 2.1.x 与 2.2.x的动态库的搜寻次序有什么不同?为什么会采用现在的方案?(2分)