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

网站扁平化布局/郑州网络营销推广

网站扁平化布局,郑州网络营销推广,网站建设属于什么税种,开网店哪些平台不收费Lunix编程开发基础 前言 本文讲解如何在Lunix系统上进行编程开发,以C代码为例讲解如何对源代码进行编译,链接等,如何使用make工具和编写Makefile文件,以及如何对代码进行GDB调试,包括了在Lunix系统进行代码编程的一整…

Lunix编程开发基础

前言

本文讲解如何在Lunix系统上进行编程开发,以C代码为例讲解如何对源代码进行编译,链接等,如何使用make工具和编写Makefile文件,以及如何对代码进行GDB调试,包括了在Lunix系统进行代码编程的一整套入门流程。现在虽然有比较好的Lunix集成开发工具,但是如果能够了解Lunix系统下代码的具体汇编,编译,链接,调试等各个阶段及其命令,一定是一个合格的Lunix开发人员的基础。

一、GCC编译器

  • 由编写的C语言源码到可执行的程序要经过下图所示的几个阶段。
    1.C代码源码*.c文件;=》2. 生成汇编代码;=》3.生成目标代码;=》4. 链接成可执行文件。
    在这里插入图片描述
  • GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、MacOS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。
    GCC常用对应C代码编译过程的各个阶段的命令如下,命令中的“*”代表文件名,具体以hello.c源代码为例进行展示。
# hello.c源代码
#include<stdio.h>
int main(void)
{printf("hello\n");return 0;
}

1.预编译过程,生成预处理后的文件*cpp。处理宏定义和include,去除注释,不会对语法进行检查。

gcc -E -o *.cpp *.c

在这里插入图片描述

2.编译过程,生成编译文件*.s。这个阶段,检查语法,生成汇编代码。

gcc -S -o *.s *.c  # 由源代码*.c直接生成汇编文件*.s

在这里插入图片描述
或者,

gcc -x cpp-output -S -o *.s *.cpp #由预处理代码*.cpp 生成 汇编代码 *.s

在这里插入图片描述
3.汇编过程,生成目标代码*.o。该阶段生成二进制机器代码,理论上可以执行,但是还没有与相关环境进行链接,因此还不能执行。

gcc -c *.c # 由源代码*.c直接生成目标代码*.o

在这里插入图片描述
或者,

gcc -x assembler -c *s -o *.o  #由汇编代码 *.s 生成 目标代码 *.o

在这里插入图片描述
4.链接过程,生成可执行代码。

gcc -o * *.c  # 由源代码*.c直接生成可执行程序 *

在这里插入图片描述
或者,

gcc -o * *.o #  #目标代码 *.o 生成 可执行程序

在这里插入图片描述

总结:以上四个过程只是将生成可执行程序的过程分解了,一般常用的是直接有源代码*.c生成可执行程序,即一句话完成: gcc -o hello hello.c

5.执行程序
在这里插入图片描述

二、make命令工具

在这里插入图片描述
在这里插入图片描述

三、Makefile组成结构

Makefile由多个目标组成,每个目标包含多个前置条件(其它目标),以及自己的命令。
make工具默认执行Makefile文件中的第一个目标。
Makefile就是将大量的代码编译命令(gcc命令和Shell命令)封装在一个文件中,通过make工具直接执行Makefile中的命令,方便代码的编译。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意,默认情况下,每个命令之前必须有一个tab键,不能用8个空格代替。

  • 为hello.c源代码编写Makefile文件如下
    在这里插入图片描述
  • 执行make工具,生成可执行程序
    在这里插入图片描述
  • 执行make工具,删除文件
    在这里插入图片描述

四、Makefile文件语法

在这里插入图片描述
在这里插入图片描述
关于 % 通配符可以参考这篇博文的详细讲解

  • 将hello.c 的Makefile修改为以%通配符进行编写,具体实现如下
    在这里插入图片描述
    其中,$<表示第一个前置条件
    在这里插入图片描述
    在这里插入图片描述

= 赋值运算法,指VARIABLE被赋予value的最新值
:= 赋值运算符,指VARIABLE被赋予value的初始定义值
?= 赋值运算符,值VARIABLE为空时才被赋予value的最新值
+= 赋值运算符,值连接运算符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
\ 表示 为同一条shell命令,因为每行命令在同一个shell中执行,没有继承关系
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、GDB代码调试

  1. 使用命令 gcc -g *.c -o *生成带有调试信息的可执行程序
gcc -g hello.c -o hello
  1. 使用 gdb ./hello装入调试程序
  2. 使用run启动程序
  3. 添加断点
    在这里插入图片描述
  4. 跟踪变量
    在这里插入图片描述
    Watch 变量:设置后,需要使用 continue(c)继续执行代码,如果watch变量发生变化,会自动打印出新值和旧值
    在这里插入图片描述
    Backtrace 最简单的是可以看到函数之间的调用关系。

六、后记

学习参考链接

要搬新的办公室了,说了快两年了终于实现了,换个新环境,希望能够一切顺利,顺利发paper,顺利毕业,顺利找到好工作…

http://www.lbrq.cn/news/1263097.html

相关文章:

  • 网站目录做301/百度百度一下就知道
  • 做网站用云虚机还是ecs/百度一下百度网站
  • 菏泽网站建设/北京seo结算
  • 衡东网站制作/网站制作企业
  • 易语言怎么做点击按钮打开网站/电脑全自动挂机赚钱
  • 淄博市建设档案馆网站/专业网站建设
  • 沂南做网站/任务放单平台
  • 郑州黑帽seo培训/引擎优化seo是什么
  • 做网站设计的价格/免费建立个人网站申请
  • 个人博客网站注册/中央常委成员名单
  • wordpress换行代码/百度搜索结果优化
  • 临沂专业网站建设公司/广州中小企业seo推广运营
  • 现在疫情可以去广州吗/宁波seo排名外包
  • 中华人民建设部网站/seo网站推广招聘
  • 商业网站需要的/中国疾控卫生应急服装
  • 长春电商网站建设/制作网页的步骤
  • 内容展示类网站/交友平台
  • 天津做网站贵吗/快速网站推广公司
  • 中企动力做网站好吗/自己建网站流程
  • 建设一个网站需要多少钱/店铺推广软文范例
  • 网上做网站兼职/昆明网络营销
  • 黑群辉做web下载网站/进一步优化落实
  • 榆林国贸网站建设/百度搜索风云榜下载
  • 企业登记代理公司/网站seo推广方案
  • 建网站的大公司/汕头企业网络推广
  • 广州建外贸网站公司简介/谷歌官网登录入口
  • 高效的网站建设/网络软文营销案例3篇
  • 成都网站建设益友网络/网站优化排名服务
  • c 教程如何做网站/看到招聘游戏推广员千万别去
  • 专教做美食的网站/app运营
  • DP-v2.1-mem-clean学习(3.6.8.2-3.6.8.3)
  • 基于Java的AI工具和框架
  • 【视频内容创作】PR的关键帧动画
  • 二叉树的锯齿形层次遍历
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | TodoList(代办事项组件)
  • trace-cmd记录线程被中断打断的时间