当前位置: 首页 > news >正文

个人备案网站 论坛杭州网站制作公司网站

个人备案网站 论坛,杭州网站制作公司网站,百度网站降权,卖彩票的网站怎么做的【Linux系统】开发工具(上) {软件包管理器yum,更新yum源,文本编辑器vim,vim的三种基本模式,vim指令集,代码编译器gcc/g} 四、Linux调试器:gdb 4.1 debug模式 程序的编译模式有两种,debug模式和…

【Linux系统】开发工具(上) {软件包管理器yum,更新yum源,文本编辑器vim,vim的三种基本模式,vim指令集,代码编译器gcc/g++}


四、Linux调试器:gdb

4.1 debug模式

  • 程序的编译模式有两种,debug模式和release模式
    • debug模式:加入了调试信息,使程序可已被调试。但体量较大,运行较慢。
    • release模式:可执行程序中没有调试信息,不可被调试。但程序体量小;且编译器对程序做相关优化,运行速度快。
  • Linux gcc/g++编译出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

4.2 如何使用?

  1. debug模式编译

    • gcc -g test.c -o test.out
      
  2. 进入gdb模式

    • gdb test.out
      
  3. 基本操作

    1. 运行程序:r或run
    2. 逐过程:n或next
    3. 逐语句:s或step
    4. 执行完成当前函数:finish
    5. 执行到下一个断点处:c或continue
    6. 执行到指定行:until 行号
  4. 显示源代码:l或list

    1. 显示指定行的源代码(每次10行):l/list 行号
    2. 从上次的位置开始显示:l/list
    3. 显示指定函数的源代码:l/list 函数名
  5. 断点相关

    1. 设置断点

      1. 在指定行设置断点:b/break 行号

      2. 在指定函数的入口处设置断点:b/break 函数名

    2. 查看断点信息: i b/info b

    3. 删除断点:d 断点号

    4. 删除所有断点:delete breakpoints

    5. 禁用断点:disable 断点号

    6. 启用断点:enable 断点号

  6. 监视器

    1. 临时显示变量或表达式的值:p/print 表达式
    2. 监视变量或表达式的值:display 表达式
    3. 取消监视变量或表达式的值:undisplay 表达式编号
    4. 显示当前栈帧局部变量的值:i/info locals
    5. 调试时修改变量的值:set var 变量=#
  7. 调用堆栈

    1. 查看各级函数调用及参数:bt/breaktrace
  8. 退出gdb:quit 或 ctrl + d


五、Linux项目自动化构建工具:make/Makefile

5.1 什么是make/Makefile?

  • make/Makefile用于维护文件和文件之间的相互依赖关系,由多文件形成可执行程序。简单来说,make/Makefile用于进行多文件编译

  • makefile文件

    • 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。
    • makefile是一个文件,记录了文件间的依赖关系和依赖方法。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
  • make命令

    • make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
    • make是一条命令,makefile是一个文件,两个搭配使用,完成项目的自动化构建。

5.2 如何写Makefile文件?

1. 规则模板

img

2. 写明依赖关系和依赖方法

  • 一般写法
    在这里插入图片描述

    • 依赖关系:上图中可执行程序mycode的生成依赖于mycode.c源文件

    • 依赖方法:gcc -o mycode mycode.c就是对应的依赖关系

    注意:写依赖方法前要加Tab进行缩进

  • 特殊符号简写
    在这里插入图片描述

    • $@:表示目标文件(图中的mycode文件)
    • $^:表示所依赖的文件列表(图中的mycode.c文件)

3. 写明项目清理方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5xYX3NyS-1680169559237)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230328115148743.png)]

  • 有时工程是需要被清理的,以便重新编译。
  • make扫描Makefile文件的时候,默认会形成一个目标依赖关系,一般是第一个!在执行make空命令时,会自动执行目标依赖关系。
  • 像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显式的要求make执行。即命令——“make clean”,以此来清除所有的目标文件,以便重新编译。
  • .PHONY:用于修饰对应的符号,表示伪目标。被修饰的符号总是可以被执行。

5.3 多文件编译

  • 多文件编译的框架:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hr1RRsfg-1680169559242)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230330152410704.png)]

  • 编写src目录下的makefile文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8eylKrS0-1680169559243)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230329204336079.png)]

    生成目标文件:将各源文件编译成目标文件,并将生成的目标文件移动到obj目录下。

  • 编写obj目录下的makefile文件

    img

    生成可执行程序:将所有目标文件与库文件进行链接,形成可执行程序。并将生成的可执行程序移动到bin目录下

  • 编写项目主目录下的Makefile文件

    img

    总控:全局:先后到src和obj目录下生成目标文件和可执行程序。还可以进行项目清理,以便重新生成。

  • 为什么要分两步编译?

    • 程序编译一般分两步:.c->.o,.o->.out

    • 分两步两步编译是因为:如果其中某个源文件存在问题,调试修改后只需要将这个存在问题的源文件重新编译成目标文件即可。其他h的目标文件直接链接,不用再次编译

    • 如果一步直接.c->.out其中的.o文件没有保存,则若每次修改其中某个.c文件都需要把所有文件都重新编译一次浪费时间。


六、Linux小程序:进度条

6.1 行缓冲区

#include <stdio.h>
int main()
{
printf("hello Makefile!");
sleep(3);
return 0;
}
  • printf已经执行,但是数据没有被立即刷新到显示器上。

  • 显示器设备的刷新策略是行刷新,即遇到\n进行刷新。

  • 使用printf输出的字符串只有遇到换行符\n才会刷新到显示器。在此之前字符串会被暂存在此C程序的行缓冲区中。

  • 当然,我们也可以使用fflush函数将缓冲区中的数据立即刷新到标准输出(显示器)。

6.2 进度条代码

#include <stdio.h>                           
#include <unistd.h>                      
#include <string.h>                      int main(){                              char bar[101];                         char *label="|/-\\";                   memset(bar,0,sizeof(bar));             for(int i = 0; i <= 100; i++)          {                                      printf("[%c][%-100s][%-3d%%]\r",label[i%4],bar,i);    fflush(stdout);                      bar[i]='#';                          usleep(50000);                       }                                      printf("\n");                          return 0;                              
} 

七、代码管理平台:git

  • 常用命令

    1. git clone:将gitee云中的仓库拷贝到本地

    2. git status:查看当前仓库的状态包括:待添加的文件,待提交的文件等

    3. git log:显示当前仓库的提交记录和日志信息

    4. git add:添加文件到待提交文件列表

    5. git reset HEAD:取消设置待提交文件

    6. git commit:将待提交文件提交到本地仓库

      • git commit -m “日志信息” //提交必须填写日志信息
      • git commit -m -a “日志信息” //未添加文件而只是删除文件
    7. git push:将本地仓库中的内容上传到gitee云

http://www.yayakq.cn/news/92219/

相关文章:

  • 如何建设网站app怎么做下载类的网站
  • 自助建站门户网站帆软社区app
  • 厦门电信网站备案dedecms 营销网站模板
  • 小型电子商务网站开发上海十大保安公司排名
  • 台州品牌网站设计app在线生成网站
  • 网站美工设计流程网站设计原则的历史
  • 如何选择百度网站优化公司飞飞cms悠悠电影网站
  • 手机网站建设报价多少北京同仁医院眼科医生免费咨询
  • wordpress建多语言分站短链接生成算法
  • 各类网站导航android studio教程
  • 网站建设泉州效率网络天眼查企业查询
  • wordpress网站mip改造wordpress仿小程序
  • 快速搭建网站系统17网站一起做网店深圳
  • 0网站建设的好坏可以依据的标准有自媒体seo优化
  • 找家里做的工作到什么网站wordpress 登录很慢
  • 一站式营销推广平台dark ui wordpress
  • 静态网站跟动态郑州设计公司有哪些
  • 网站建设通讯稿移动端网站如何开发
  • 网站内容的丰富性广州知名网络推广公司
  • 分类信息网站怎么建设wordpress连接ftp
  • 全国 做网站的企业市场营销数字营销
  • 外省公司做网站备案如何做一个营销型网站
  • 泸州网站建设唐网互联wanwang
  • 深圳哪里有可以做网站跳转的公司如何自己做淘宝网站
  • 中医医院网站建设需求电商网站有哪些官网
  • 泉州手机网站开发上海专业的网站
  • 企业网站建站 优帮云网站建设费用详细表
  • 我的世界做弊端网站品牌vi设计手册案例欣赏
  • ip库网站源码网站开发会计处理
  • 南京有哪些做网站的公司淘宝建设网站的意义