UC 3

一、GDB调试工具的使用
举例演示GDB调试工具的使用
代码参见tmaht文件夹

在程序编译链接成可执行文件的时候,加上-g/-ggdb参数
gcc -g *.c -std=c99
这样生成的可执行文件里含有调试信息

使用以下命令启用GDB调试工具来调试可执行程序
gdb a.out

GDB调试命令
l   list    列出文件的内容
b  行号/函数的名字   breakpoint  设置断点    
r  run运行
n  next  下一条语句
p  变量的名字  察看每个变量的值
s  step  下一步
q  quit  退出

补充:
什么是断点?
程序执行到这个点的时候,停止在这里。

二、环境变量
环境变量是bash进程给子进程提供的运行环境。

什么是进程?
程序运行起来就是进程。
程序运行的实例,就是进程。
进程是动态的

什么是程序?
程序是计算机指令的集合。是以文件的形式存放在计算机的磁盘里。
程序是静态的
怎么去察看环境变量?
env命令察看bash提供的环境变量
格式:
环境变量名=值
提取环境变量的值
$环境变量名
为环境变量赋值
环境变量名=值
将自定义变量转换为环境变量
export 变量名

环境变量PATH
echo $PATH

/home/tarena/workdir/Android2.3/android-source/jdk1.6.0_16/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/tarena/workdir/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools:.
以:分割的多条路径

举例验证环境变量PATH的应用
编写hello.c程序,编译生成hello。将hello更名为ls。将自己的ls程序放到PATH环境变量指定的第一个路径下。

/home/tarena/workdir/Android2.3/android-source/jdk1.6.0_16/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/tarena/workdir/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools
export PATH=$PATH:.

~  用户工作主目录

环境变量PS1
export PS1="\W\$"
提示符
更多的提示符的符号参见《鸟哥私房菜》

三、静态库的制作和使用
使用的代码参见tmath文件夹
#include <>   和  #include ""的区别
gcc -v hello.c

静态库的制作和使用
静态库的命名   lib+库名.a
gcc -c *.c
ar -r libtmath.a *.o
gcc ../test.c -L. -ltmath -std=c99 -o t

-L路径   这个路径是库文件所在文件夹的路径
-l函数库名字   指定仓库的名字

四、动态库的制作和使用
动态库的命名   lib+库名.so
第一步:
gcc -fPIC -c *.c

-fPIC  与位置无关参数

第二步:
gcc -shared -o libtmath.so *.o

第三步:
gcc test.c -Ltmath -ltmath -std=c99

day03$a.out
a.out: error while loading shared libraries: libtmath.so: cannot open shared object file: No such file or directory

怎么察看a.out文件依赖于哪些动态库?
ldd a.out

day03$ldd a.out
    linux-gate.so.1 =>  (0xb7709000)
    libtmath.so => not found
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb754e000)
    /lib/ld-linux.so.2 (0xb770a000)

加载器找不到libtmath.so。
怎么让加载器能找到libtmath.so?
加载器查找动态库的两种方式
1. LD_LIBRARY_PATH
2.将库文件移动到 /usr/lib 或者 /lib文件夹下。
连接器默认的搜索路径
同时也是加载器的默认路径
将libtmath.so 移动到/usr/lib

静态链接:在编译的时候,发生的链接,称为静态链接  
动态链接:代码加载到内存运行的时候,发生的链接,称为动态链接

静态库和动态库的区别:
使用静态库编译链接的程序,在可执行文件中使用到的静态库的函数被拷贝到了可执行文件里。可执行文件不再依赖与静态库了。静态链接的可执行文件比较大。

使用动态库编译链接的程序,在可执行文件里使用到的动态库里的函数,只是做了一个符号的简单的引用,并没有发生代码的拷贝,在可执行程序执行的时候,还依赖于动态库的文件。
使用动态库链接的可执行文件比较小。会产生库文件的共享。


-fPIC 适用于通用的架构
-fpic 适用于几个架构

补充:

小结:
一、GDB调试工具的使用
二、环境变量
三、静态库的制作和使用
四、动态库的制作和使用
动态链接  静态链接
动态库和静态库的区别

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值