20155229付钰涵 第二周课堂实践

20155229付钰涵 第二周课堂实践

第二周测试3-gdb测试

(老师)建议:在使用jdb时,用打开三个标签:1、用于vi;2、用于编写代码;3、用于调试代码

(由于还未习惯这种做法,所以我的调试还是用一个标签。)

1. 用gcc -g编译vi输入的代码
  • 先输入gcc -g *.c -o xxx对输入的代码进行编译,再输入gdb xxx进入该代码的调试阶段。

832288-20171001215313653-309299273.jpg

2. 在main函数中设置一个行断点

①、输入l(list)显示出整段代码②、设置断点,用b(break),如图,先对第6行和第8 行设置断点
③、输入r(run)运行
④、输入n(next)执行下一行

3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点

增加空循环

运行到断点时,设置b if i==2614接着用n执行下一步
832288-20171001215350669-281367769.jpg

第二周测试4-静态库的测试

1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
参考 c语言生成动态库

静态库文件的命名是以lib为前缀,紧跟静态库名,扩展名为.a,创建静态库用ar命令。

gcc -c add.c sub.c mul.c div.c
ar rcsv libmymath.a add.o sub.o mul.o div.o

832288-20171001215527669-1734353756.jpg

在程序中使用静态库,在静态库前加上前缀lib,追加扩展名.a得到的静态库文件名来查找静态库文件。

gcc main.c -o main -L. -lmymath

第二周测试5-共享库

1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?

参考 静态库、共享库、动态库的创建于使用

  • 创建共享库
    -fpic表明创建position independengt code,
    gcc -fPIC -c add.c sub.c mul.c div.c
    gcc -shared -o libmymath.so add.o sub.o mul.o div.o

832288-20171001215955184-1069960362.jpg

重新编译链接程序,通过-l 参数指定库路径gcc -o main main.c -L. -lmymath创建好共享库后,将libmymath.so拷贝到lib或/usr/lib下

832288-20171001220133981-1910479199.jpg

第二周测试6-Makefile

1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
  • 首先vim Makefile进入
  • 然后参考 makefile使用 写出makefile文件内容
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    

保存后使用make编译

在编译中一直出错,如图

832288-20171001220323044-117658864.jpg

上网查过后,发现所有命令前要输入tab
832288-20171001220410606-889954322.jpg

重新编译,还是出错,然后发现应该是用vim makefile而不是vim Make file,改正后的makefile成功。
832288-20171001220343528-1306242464.jpg

Linux下实现od命令功能

实现od -tx tc XXX

od用于将指定文件内容以把进制、十进制、十六进制、浮点格式或Ascii编码字符方式显示
命令格式

od [] []

命令示例
  • od -tx为以十六进制输出,默认以四字节为一组(列)显示

  • od -tc等价于-c,选择ASCII码字符或者是转义字符

代码运行结果

832288-20171001223407465-306179496.jpg

经老师提醒,需要能读取多个文件

修改后如图

832288-20171010210649215-483976767.jpg

静态库

832288-20171001223448919-507944993.jpg

动态库

832288-20171001223459872-2094079190.jpg

参考文献

转载于:https://www.cnblogs.com/fyhtvxq/p/7618004.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值