引言
上一节最后我们说到,可以在Linux上进行c语言的编译
在Linux中安装了gcc后就可以进行c程序的编译调试运行等操作
那么这一节我们就从简单的c程序进一步加入多个c文件影响的c程序
例如在vs中 一个程序需要引入用户自定义的头文件
例如这个c程序
因为c程序主体使用了头文件中的结构体变量和函数定义,所以我们需要引入用户自定义的头文件
那么我们在Linux中来实现
首先定义头文件和c程序主体
在头文件中仅定义函数定义
那么我们在调用函数的时候我们就需要使用include" "调用
那么在vs中,如果是用户自定义的头文件,我们就需要使用“ ” 来引用用户自定义的头文件
那么在Linux中,我们有没有可能可以有一种方法来使用include<>来引用用户自定义的头文件呢
我们可以看看include的应用原理
include<>的引用其实是引用系统定义好的头文件
在Linux中 ,这种系统自定义的头文件在 根目录下的用户目录中的include下
(/usr/include/)
系统定义好的头文件我们就可以直接使用include<>调用
在上一节中我们学习到了移动文件的命令
那么我们可以将用户自定义的头文件移动到系统定义好的库中
就可以使用include<>调用用户自定义的头文件
但是需要注意的是我们需要使用管理员身份运行这个命令 因为这里涉及到了对家目录之外的目录操作
我们这里调用使用一下
可以看到我们需要使用管理员身份
然后把include" "改为include<>
然后一步编译出可执行程序并运行
可以看到这样我们就可以将用户自定义的头文件直接用<>调用
上一节我们说到 在执行可执行程序时应带上地址 不然会解析成命令无法执行成功
那么我们可以效仿上一个使用方法
把main移动到命令库中便可
Linux中的基本命令储存在bin中
那么我们便可直接把main移动到bin中,就可以当作命令使用
但是需要注意的是,涉及到系统文件的操作都要谨慎使用,这里只是提供一个想法,如何系统库中有和你移动文件同名的文件,那么就会被你移动的文件覆盖,从而影响Linux的正常使用
那么如果一个文件没有编译上的问题,而是有逻辑问题
那么我们在Linux中应该如何调试呢
Linux中调试c程序使用的是gdb命令
gdb和以往一样需要安装
然后具体使用
在编译时有细小差别
这里我们编写一个字符串操作函数
这个文件在编译上是没有错误的
我们这里使用一下gdb
可以看到在编译阶段要多一个 -g
然后直接gdb gdb的对象是编译后的可执行文件
如果成功安装gdb 那么这里就可以显示一个gdb字样
然后就可以对其进行操作
gdb l查看文件一到10行
然后加上数字的话就可以跳转到某一行
然后下断点是
b 加某一行
这里我们将断点下到9行
然后可以进入断点
使用info b命令
然后我们可以用run运行程序
他会停在断点位置
然后n可以下一步
这个函数的功能是从键盘获取字符串并输出
然后如果是end,结束并退出
但是这里显示并没有退出,那么就是程序内部逻辑问题
那么我们就用p监视变量
可以看到变量buffer中多存储了一个"\n"
那么我们就可以用q退出调试再修改程序
修改程序
发现调试成功
还有一种修改方式是使用strncmp函数
这就实现了一个简单c程序的调试
这里是gdb调试的其他命令