Linux实验一:Linux环境及编程工具

news2025/1/17 5:57:00

目录

    • 一、实验目的
    • 二、实验内容
    • 三、参考代码
    • 四、实验步骤
      • 步骤1. 编辑源代码test1.c
      • 步骤2. 编译源代码test1.c
      • 步骤3. 调试test1
      • 步骤4. 重新编译运行test1.c
    • 五、实验结果
    • 六、实验总结


一、实验目的

1、掌握Linux C开发过程中的基本概念;
2、掌握如vim,GCC,GDB等开发工具的使用。

二、实验内容

  将参考代码录入到test1.c文件中,编译执行后发现结果与预期不一致,请使用GDB调试, 完成字符串反序输出功能。

三、参考代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int reverse_str(char *string);

int main (void) {
    char string[]= "Linux C Tools : GCC and GDB";
    printf("The original string is %s \n", string);
    reverse_str(string);
}

int reverse_str(char *str){
    char *new_str;
    int i,size;
    size = strlen(str);
    if((new_str=(char *) malloc (size + 1))==NULL){
        return -1;
    }

    for (i=0;i<size;i++)
        new_str[size-1]=str[i];
    new_str[size+1]=' ';
    printf("The reverse string is %s\n",new_str);
    free(new_str);
    return 0;
}

四、实验步骤

步骤1. 编辑源代码test1.c

mkdir test1
cd test1
vim test1.c

在这里插入图片描述

在这里插入图片描述

步骤2. 编译源代码test1.c

首先要安装GCC编译器:

yum install gcc

在这里插入图片描述

再进行编译:

gcc test1.c -o test1 -g

运行:

./test1

在这里插入图片描述

步骤3. 调试test1

gdb test1

(1)回顾调试的基本方法:跟踪语句执行过程,观察执行结果;

(2)设置断点的三种基本方法:
① b <line_number>
② b <line_number> if condition_expression
③ b <function_name>

调试,设置断点在21行和24行,并运行至21行和24行:

在这里插入图片描述

(3)查看中间输出结果:
① p <var>
② set print element 0
p <array_name>或<pointer>

说明:GDB中查看字符串变量值可通过“set print element 0”命令,一次性显示字符串所有内容;

(4)分析中间结果,修改22行语句为new_str[size - i-1] = str[i];

在这里插入图片描述

步骤4. 重新编译运行test1.c

gcc test1.c -o test1 -g
./test1

在这里插入图片描述

五、实验结果

最后正确的代码和运行结果如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int reverse_str(char *string);

int main (void) {
    char string[]= "Linux C Tools : GCC and GDB";
    printf("The original string is %s \n", string);
    reverse_str(string);
}

int reverse_str(char *str){
    char *new_str;
    int i,size;
    size = strlen(str);
    if((new_str=(char *) malloc (size + 1))==NULL){
        return -1;
    }

    for (i=0;i<size;i++)
        new_str[size - i-1] = str[i];
    new_str[size+1]=' ';
    printf("The reverse string is %s\n",new_str);
    free(new_str);
    return 0;
}

在这里插入图片描述

六、实验总结

  本次实验,我学到了许多关于Linux环境的基础知识和常用工具的使用技巧,并进行了实际操作和练习。
  通过实验,我更加熟悉了Linux操作系统的基本结构、文件系统、用户管理等方面的知识,掌握了常用的命令行操作。在实验中,我学习了常用的编程工具,如文本编辑器(例如Vi/Vim)、编译器(例如GCC)、调试器(例如GDB)等。通过实验,我能够熟练地使用这些工具进行代码编辑、编译和调试。
  通过GCC,我学会了如何将C/C++源代码编译成可执行文件。掌握了编译命令的语法和参数选项,比如指定输出文件名、调试信息等。使用GCC编译C语言代码很简单,例如,只需在终端中输入gcc test1.c -o test1 -g。其中,test1是编译后生成的可执行文件的名称,test1.c是要编译的C源代码文件。通过这个命令,gcc会将C源代码编译为可执行文件,并将其命名为test1。GCC提供了丰富的调试支持,我学会了如何在编译时生成调试信息,并使用GDB进行程序调试。通过设置断点、查看变量和内存状态,我能够有效地找出程序中的问题并进行调试修复。
  总的来说,通过《Linux环境及编程工具》的学习和实验,我不仅对Linux操作系统有了更深入的理解,还掌握了许多实用的编程工具和技能,这些对我的日常工作和项目开发都具有很大的帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1628264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go语言实现简单登陆返回token样例

目录 1、代码实现样例&#xff1a; 2、postman调用&#xff0c;获取登陆后的token&#xff1a; 1、代码实现样例&#xff1a; package mainimport ("net/http""time""github.com/dgrijalva/jwt-go""github.com/gin-gonic/gin" )var …

深度学习系列66:试穿模型IDM-VTON上手

1. 模型概述 如图&#xff0c;总体流程为&#xff1a; 输入为&#xff1a;衣服的编码xg&#xff1b;人物noise的编码xt&#xff1b;人物身上衣物的mask和人体pose分割(densepose)&#xff1b;衣服部分经过两部分网络&#xff1a;1&#xff09;高级语义网络IP-Adapter&#xff…

谷歌搜索留痕怎么做?

使用GLB外推技术&#xff0c;一个能让你的网站或者你的产品在谷歌上排名的神器 GLB外推&#xff0c;是利用先进的SEO技术&#xff0c;特别是光算科技的谷歌搜索留痕霸屏外推&#xff0c;来帮助你的产品或服务在谷歌上获得更高的曝光度&#xff0c;这项技术能让你的业务关键词在…

阿里云企业邮箱API的使用方法?调用限制?

阿里云企业邮箱API性能如何优化&#xff1f;配置邮箱API的优势&#xff1f; 阿里云企业邮箱以其稳定、高效和安全的特点&#xff0c;受到了众多企业的青睐。而阿里云企业邮箱API的开放&#xff0c;更是为企业提供了更加灵活、便捷的管理和操作方式。下面&#xff0c;我AokSend…

安装VMware后的相关配置

一、创建完虚拟机后 看看虚拟机设置里面的DVD&#xff1b;有没有自动检测到 二、打开虚拟机后 一直点击继续3、完成后进行重新下载VM——tools 来进行跨机子的复制粘贴&#xff0c;和屏幕大小的自适应注意:如果安装不了tools是灰色的 点开虚拟机设置——两个光盘都选用物理驱…

如何通过安全数据传输平台,保护核心数据的安全传输?

在数字化的浪潮中&#xff0c;企业的数据安全传输显得尤为关键。随着网络攻击手段的日益复杂&#xff0c;传统的数据传输方式已不再安全&#xff0c;这就需要我们重视并采取有效的措施&#xff0c;通过安全数据传输平台来保护核心数据。 传统的数据传输面临的主要问题包括&…

matlab批量读取csv文件

matlab如何批量读取csv文件 在Matlab中&#xff0c;有多种方法可以批量读取CSV文件。下面是几种常用的实现方法&#xff1a; 方法一&#xff1a;使用dir函数获取文件列表 folder 文件夹路径; files dir(fullfile(folder, *.csv)); numFiles length(files);for i 1:numFi…

通往AGI路上,DPU将如何构建生成式AI时代的坚实算力基石?

4月19日&#xff0c;在以“重构世界 奔赴未来”为主题的2024中国生成式AI大会上&#xff0c;中科驭数作为DPU新型算力基础设施代表&#xff0c;受邀出席了中国智算中心创新论坛&#xff0c;发表了题为《以网络为中心的AI算力底座构建之路》主题演讲&#xff0c;勾勒出在通往AGI…

PS入门|仿制图章工具咋用?

前言 最近讲着讲着&#xff0c;小白也不记得PS的内容讲到了哪。 咱们用过选择工具、钢笔工具、画笔工具、选框工具、魔棒工具&#xff0c;还使用过内容识别功能、蒙版功能等。 小伙伴们有没有发现&#xff0c;PS其实也没那么难&#xff1f;通过之前几次的练习&#xff0c;发…

牛客NC143 矩阵乘法【中等 矩阵 C++/Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/bf358c3ac73e491585943bac94e309b0 思路 矩阵算法在图像处理、神经网络、模式识别等领域有着广泛的用途。在矩阵乘法中&#xff0c;A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量。运算…

ROS1快速入门学习笔记 - 05发布者Publisher编程的实现

目录 一、话题模型&#xff08;发布/订阅&#xff09; 二、实现步骤 1. 创建一个功能包 2. C代码的实现 3. 配置发布者代码编译规则 4. 编译并运行发布者 5. Python代码的实现 一、话题模型&#xff08;发布/订阅&#xff09; 二、实现步骤 1. 创建一个功能包 $ cd~/ca…

NAT网络地址转换实验(华为)

思科设备参考&#xff1a;NAT网络地址转换实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 NAT&#xff08;Network Address Translation&#xff09;&#xff0c;即网络地址转换技术&#xff0c;是一种在现代计算机网络中广泛应用的技术&#xff0c;主要用于有效管…

C++中把Lambda 表达式作为参数传递给模板函数。

例子&#xff1a; template<class fun> void mytest(fun f) {_string s1 "abc";_string s2 "abc";if (f(s1, s2)){std::cout << "相等。\n";}}int main() {mytest([](const _string s1, const _string& s2) { return s1 s2; …

Arduino Nano 33 BLE Sense Rev2 IMU例程及变砖抢救方法

最近在玩 Nano 33 BLE Sense Rev2&#xff0c;先试了个网上的IMU例子&#xff0c;结果程序下载进去&#xff0c;串口显示"Failed to innitialize IMU"&#xff0c;有点小郁闷&#xff0c;只能放狗搜&#xff0c;结果网上也有老兄遇到类似问题&#xff0c;真是病急乱投…

四数之和 ---- 双指针

题目链接 题目: 分析: 我们已经知道三数之和如何求取, 并去重了 三数之和 那么四数之和同理, 需要固定两个数a和b 然后用"双指针算法" , 只要两指针之和等于target-a-b即可同样对于四个数都要进行去重 代码: class Solution {public List<List<Integer>…

为什么总说抖店做不好?做抖店需要注意这些问题,是不是都占了?

大家好&#xff0c;我是电商花花。 今天给大家总结了4个新手不注意又常犯的几个原因&#xff0c;这些建议都是我们做店这些年的实操经验&#xff0c;可以帮助大家做店自查&#xff0c;有责改之&#xff0c;无责加冕。 1、抖店核心是选品而不是玩法 很多新手在刚开始做店抖音小…

各省财政涉农支出统计数据集(2001-2022年)

01、数据简介 财政涉农支出是指在政府预算中&#xff0c;用于支持农业、农村和农民发展的财政支出。这些支出旨在促进农村经济的发展&#xff0c;提高农民收入&#xff0c;改善农村生产生活条件&#xff0c;推进农业现代化。 在未来的发展中&#xff0c;各省将继续加大财政涉…

移远通信再推系列高性能卫星、5G、GNSS及三合一组合天线

4月23日&#xff0c;全球领先的物联网整体解决方案供应商移远通信正式宣布&#xff0c;再次推出多款高性能天线产品&#xff0c;以进一步满足物联网市场对高品质天线产品的需求。 其中包括卫星天线YETN001L1A、三合一组合天线YEMA300QXA和YEMN302Q1A&#xff0c;外部5G天线YECN…

SDM模型——建模用户长短期兴趣的Match模型

1. 引言 SDM模型(Sequential Deep Matching Model)是阿里团队在2019年CIKM的一篇paper。模型属于序列召回模型&#xff0c;研究的是如何通过用户的历史行为序列去学习到用户的丰富兴趣。 SDM模型把用户的历史序列根据交互的时间分成了短期和长期两类&#xff0c;然后从短期会…

计算机视觉的应用29-卷积神经网络(CNN)中的变种:分组卷积、转置卷积、空洞卷积的计算过程

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用29-卷积神经网络(CNN)中的变种&#xff1a;分组卷积、转置卷积、空洞卷积的计算过程。分组卷积将输入通道分为几组&#xff0c;对每组独立进行卷积操作&#xff0c;以减少计算量和模型参数。转置卷…