操作系统实验指导书(2)

2019-03-23 11:25

x dw D dd 4,替换操作 r cw C cc 5,查询命令

/abc ?abc n N :n1,n2 s/word1/word2/gc 6,拷贝粘贴 y Y 2yy p P 7,其他命令

:set nu; :set nonu; u .;v y p gf CTRL-SHIFT-6 2 shell程序的编写 环境变量

echo env set $ “” ‘’ ? ``

(1)熟悉shell script的结构和运行、调试方法。 (2)熟悉shell script的变量声明方法及其输入输出。 declare –i a=3;read

(3)熟悉shell script的分支结构。编写shell script文件test1.sh,判断用户根目录下是否有名为test的文件或者目录,如果有的话,将其删除。

if [ -e test ]; then xxx else xxx fi

(4)熟悉shell script的循环结构。编写shell script文件test2.sh,实现1到100所有奇数的和并输出。

试验三 linux的C语言开发

试验目的

熟悉gcc的使用 熟悉gdb的使用 熟悉make的使用 试验内容 1 gcc (1)过程

gcc hello.c –o hello 输入 选项 输出 命令 注释

.c -E .i cpp 预编译,文件包含、条件编译、宏展开 .i -S .s cc1 编译,生成汇编文件,注意命令的路径 .s -c .o as 汇编,生成目标文件 .o [ELF] ld 链接 (2)常用选项 -v 显示进度

-W[all] 显示警告信息 -I 头文件路径,不要空格 -L 库路径,不要空格

-lName库名字(libName.或者libName.so) -shared 编译成共享库

-static 链接静态库 -fpic[fPIC] 编译成共享库

-O[n] 优化 -Dmacro=BAR在命令行定义预处理宏FOO,其值为BAR -Wl,option 传递给ld程序option 选项,比如-Wl,-dn和-Wl,-dy 注意区别:

gcc hello.c –o hello.static –Wl,-dn[-Bstatic][-static] gcc hello.c –o hello.dynatic–Wl,-dy[-Bdynamic] 默认

(3)c++

编写hello.cxx程序:

#include using namespce std; int main() { Cout<<”hello”<

g++ hello.cxx -o hello (4)静态库的建立和使用 a)建立 gcc -c add.c gcc -c sub.c

ar -r libaddsub.a add.o sub.o (查ar命令,注意/r/t/x的用法) b)调用

gcc test2.c -o test2.static -I ./ -L ./ -Wl,-dn –laddsub -Wl,-dn后面的库使用静态版本

(5)共享库的建立和使用 a)建立

gcc -fpic [-shared] add.c sub.c -o libaddsub.so b)安装

为了让动态链接库为系统所认识及共享, 就需要运行ldconfig命令。(man ldconfig,注意命令作用) 默认目录/lib和/usr/lib

配置文件/etc/ld.so.conf内所列的目录 缓存文件/etc/ld.so.cache 四种安装方式:

#cp libaddsub.so /usr/bin #ldconfig #pwd>>/etc/ld.so.conf #ldconfig #ldconfig `pwd` //更新缓存无效 #export LD_LIBRARY_PATH=\另开shell则无效 c)共享调用

gcc test2.c -o test2 -I ./ -L ./ -Wl,-dy –laddsub -Wl,-dy用于指定链接动态库版本,默认 d)动态调用

Linux 提供 4 个库函数(dlopen, dlerror, dlsym 和 dlclose),一个 include 文件(dlfcn.h)以及两个共享库(静态库 libdl.a 和动态库 libdl.so),以支持动态链接装入器。

gcc test2.c -o test2 –ldl

参考:

#include #include

int main() {

int a,b;

scanf(\ void *pHandle;

int (*sub)(int m,int n);

pHandle=dlopen(\

sub=dlsym(pHandle,\ printf(\ dlclose(pHandle); return 0; }

附:几个命令

ldd 查看文件的依赖关系

nm 查看文件的符号表,比如:nm test2|grep add objdump 查看文件的信息 2 gdb

(1) 准备gcc -g

(2) 打开gdb filename/file filename

(3) 运行run/next/step(进入子程序)/continue (4) 设置断点break/delete (5) 显示表达式的值

print exp 立即输出表达式的值

watch exp 表达式的值发生变化时,程序停止并输出其新旧值


操作系统实验指导书(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:matlab制作案例

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: