程序的编译和调试

news2025/1/19 3:24:54

gcc编译器

gcc(GNU Compiler Collection)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件,支持以下后缀:

  • .c c语言源代码

  • .h 程序所包含的头文件

  • .i 已经预处理过的C源代码文件

  • .s 汇编语言源代码文件

  • .o 编译后的目标文件

gcc –o hello hello.c
-o 输出可执行文件
-c 只要求编译器输出目标代码(.o文件),而不必输出可执行文件
-g 用于调试
./hello 查看输出结果
当你的代码在编译调试啊,在调试的过程当中,需要重新生成执行文件。

程序调试

利用__FILE__,LINE,__FUNCTION__实现代码跟踪调试

#include <stdio.h>

int main(int argc,char **argv)
{

   printf("%s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__);

   return 0;

}
  • __FILE____FUNCTION____LINE__ 是 C/C++ 中的预定义宏,用于获取当前源代码所在的文件名、函数名和行号。

    1. __FILE__:这个宏会在编译时被替换为当前源代码所在的文件名,包括文件的完整路径。例如,printf("__FILE__: %s\n", __FILE__); 会输出当前源文件的路径和文件名。

    2. __FUNCTION__:这个宏会在编译时被替换为当前所在的函数名。注意,该宏在 C++ 中支持,但在 C 中并不是标准的预定义宏。例如,printf("__FUNCTION__: %s\n", __FUNCTION__); 会输出当前所在的函数名。

    3. __LINE__:这个宏会在编译时被替换为当前代码所在的行号。例如,printf("__LINE__: %d\n", __LINE__); 会输出当前代码所在的行号。

  • 这些预定义宏在调试和错误追踪中非常有用,可以帮助程序员了解代码执行的上下文信息,方便定位问题所在。

C语言基础

一个程序应当包含两部分内容:

  • 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构

  • 对操作的描述。即操作步骤,也就是算法
    在这里插入图片描述

算法的基本概念

  • 做任何事情都有一定的步骤。步骤要按照一定的顺序进行,缺一不可,次序也不能错。广义的说,为解决一个问题而采取的方法和步骤就称为算法。
  • 在这里插入图片描述

思考与总结

总结

  • gcc编译器的使用

  • 程序的调试

  • C语言基础介绍

思考:

  • gcc做为一个交叉编译器,如何生成ARM平台的执行程序?
    • GCC(GNU Compiler Collection)是一个开源的编程语言编译器套件,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada等。它不仅可以编译代码到本地平台,还可以进行交叉编译,将代码编译为在不同的目标平台上运行的执行程序。

    • 要生成ARM平台的执行程序,需要进行ARM的交叉编译设置。以下是在Linux操作系统上使用GCC进行ARM交叉编译的基本步骤:

      1. 安装ARM交叉编译工具链:
        首先,您需要安装针对ARM平台的交叉编译工具链。这些工具链包括ARM架构的交叉编译器、链接器和库文件。您可以从ARM官方网站或第三方供应商获取预编译的工具链,也可以自行构建工具链。

      2. 设置环境变量:
        在交叉编译之前,需要设置环境变量,告诉GCC使用特定的交叉编译工具链。假设您的ARM交叉编译器安装在/path/to/arm-toolchain目录下,可以执行以下命令设置环境变量:

        export CC=/path/to/arm-toolchain/bin/arm-linux-gcc
        export CXX=/path/to/arm-toolchain/bin/arm-linux-g++
        export LD=/path/to/arm-toolchain/bin/arm-linux-ld
        
      3. 编写并编译代码:
        编写适用于ARM平台的代码,保存为 .c.cpp 文件。然后使用设置好的交叉编译器进行编译。例如:

        arm-linux-gcc -o output_filename input_filename.c
        

        或者使用C++代码编译时:

        arm-linux-g++ -o output_filename input_filename.cpp
        
      4. 运行生成的执行程序:
        将生成的可执行文件传输到目标ARM平台上,并在目标平台上运行它。

      • 注意事项:

        • 在交叉编译时,要确保代码中不使用依赖于本地平台的特定库或功能。
        • 如果您需要链接其他库,请确保这些库是为ARM平台交叉编译的版本。
        • 在交叉编译时,需要根据目标平台的需求进行相应的优化和配置。可以使用GCC的一些编译选项来设置目标平台和优化级别。
      • 交叉编译是一个复杂的过程,需要根据具体的目标平台和应用场景进行设置。如果您是初次进行ARM交叉编译,建议查阅相关文档和教程,或参考特定的硬件和系统提供商的指南,以确保正确设置和生成适用于ARM平台的执行程序。

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

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

相关文章

Leetcode69 x的平方根

二分查找法 代码 public int mySqrt(int x){int l 0, r x,ans -1;while(l < r){int mid l (r - l) / 2;if((long) mid * mid < x){ans mid;l mid 1;}else{r mid - 1;}}return ans; }

C++ 多文件结构和编译预处理命令——C++程序的一般组织结构

1. C程序的一般组织结构 C源程序的结构基本上都是由3个部分构成&#xff1a;类的定义、类的成员的实现和主函数。因为所编写的程序比较小&#xff0c;所以这三个部分都写在了同一个文件当中。在规模比较大的项目中&#xff0c;往往需要多个源程序文件&#xff0c;每个源程序文…

windows编译zookeeker动态库供C++链接使用以及遇到的错误处理方法

windows下面C链接zookeeper资料不多&#xff0c;特此记录一下 编译环境VS 2015 一. 相关安装包安装下载 1. zookeeper zookeeper3.6.4 下载zip包解压即可 2. ant apache-ant-1.9.16 将包进行解压D:project\apache-ant-1.9.16&#xff0c;然后配置环境变量 新建 ANT_HOME 系…

linux/windows如何退出telnet

在运维过程中&#xff0c;我们需要使用telnet来验证tcp端口的连通性&#xff0c;当tcp端口的连通性处于正常状态时&#xff0c;那么此时如果退出呢&#xff1f;下面就为大家讲一讲这个小常识&#xff0c;希望能对大家有所帮助。 1.Linux下telnet退出 如果没有telnet命令&…

Apache Flink概述

Flink 是构建在数据流之上的一款有状态的流计算框架&#xff0c;通常被人们称为第三代大数据分析方案 第一代大数据处理方案&#xff1a;基于Hadoop的MapReduce 静态批处理 | Storm 实时流计算 &#xff0c;两套独立的计算引擎&#xff0c;难度大&#xff08;2014年9月&#x…

第五章 Git

5-1、Git的安装 1、为什么要使用代码版本控制系统 【1】版本控制 【2】开发中存在的麻烦 2、Git和SVN的对比 【1】Git和SVN对比 &#xff08;1&#xff09;SVN &#xff08;2&#xff09;Git 3、Git下载和安装 【1】下载 【2】安装 一路下一步就好了&#xff0c;更换安装…

【力扣】 12. 整数转罗马数字 模拟

力扣 12. 整数转罗马数字 解题思路 当某个位数的某个数不为4或9时&#xff0c;高位对应的字符总是在低位对应的字符前面。只有当该数为4或9时&#xff0c;低位对应的字符在高位前面。 根据这一特性&#xff0c;我们进行分类讨论。 1.当数为4时&#xff0c;则对应的罗马数为 10 …

【心电图信号压缩】ECG信号压缩与通过三次样条近似重建的ECG信号压缩研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Vue [Day2]

指令修饰符 v-model.trim v-model.number 事件名.stop click.stop 事件名.prevent keyup.enter <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-w…

数据泄露的平均成本创历史新高

IBM Security 发布了年度数据泄露成本报告&#xff0c;显示数据泄露的全球平均成本在 2023 年达到 445 万美元&#xff0c;创下该报告的历史新高&#xff0c;并且比过去 3 年增加了 15%。 检测和升级成本在同一时间段内跃升了 42%&#xff0c;占违规成本的最高部分&#xff0c…

促科技创新:高德数据优化篇之OceanBase最佳实践

本文作者&#xff1a; 振飞&#xff08;高德地图总裁&#xff09; 炳蔚&#xff08;高德技术服务平台负责人&#xff09; 福辰&#xff08;高德服务端架构师&#xff09; 背景 高德成立于2002年&#xff0c;是中国领先的移动数字地图、导航及实时交通信息服务提供商&#xff0c…

Ctfshow web入门 JWT篇 web345-web350 详细题解 全

CTFshow JWT web345 先看题目&#xff0c;提示admin。 抓个包看看看。 好吧我不装了&#xff0c;其实我知道是JWT。直接开做。 在jwt.io转换后&#xff0c;发现不存在第三部分的签证&#xff0c;也就不需要知道密钥。 全称是JSON Web Token。 通俗地说&#xff0c;JWT的本质…

通讯协议030——全网独有的OPC HDA知识一之基本概念(一)

本文简单介绍OPC HDA规范的基本概念&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui)。 目前&#xff0c;大多数历史数据系统都使用自己的专有接口对外提供数据服务&#xff0c;不能与任何其他系统互操作。OPC HDA规范旨在提供历史数据访问的标准接口&#xff0c;促进用…

2023年信息系统项目管理师-学习计划安排

1. 关注信管网&#xff1a; 信管网 - 考试专业网站&#xff01; (cnitpm.com) 2023年下半年信息系统项目管理师报名时间将于8月14日开始&#xff0c;各地报名时间不同&#xff0c;请考生注意查看当地报名时间&#xff0c;但报名官网入口是统一的&#xff0c;均在中国计算机技术…

如何评估DC电源模块的效率

BOSHIDA 如何评估DC电源模块的效率 BOSHIDA DC电源模块的效率是指输入电功率与输出电功率的比率&#xff0c;通常以百分比的形式表示。因为电源模块的效率和整个系统的运行时间、负载变化等因素有关&#xff0c;因此需要进行多种测试和评估来确定其真实效率。 以下是一些评估D…

500余名师生齐聚线下!智能汽车竞赛百度创意组东西部赛区圆满结束

“全国大学生智能汽车竞赛”是教育部倡导的大学生科技A类竞赛&#xff0c;中国高等教育学会将其列为含金量最高的大学生竞赛之一&#xff0c;为《全国普通高校大学生竞赛排行榜》榜单内赛事。飞桨共承办了百度完全模型组和百度智慧交通组两大赛道。其中&#xff0c;创意组赛事共…

springboot+vue学生宿舍寝室管理系统的设计与开发fyaa5--论文

金桂圆寝室管理系统主要包括管理员、宿管和喾三大部分。 管理员主要功能为&#xff1a;个人中心、学生管理、宿管管理、楼宇信息管理、宿舍信息管理、住宿信息管理、宿舍更换管理、退宿信息管理等功能。 宿管主要功能为&#xff1a;个人中心、宿舍信息管理、住宿信息管理、宿舍…

java+springboot+mysql企业邮件管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的企业邮件管理系统&#xff0c;系统包含超级管理员、管理员、员工角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;员工管理&#xff1b;反馈管理&#xff1b;系统公告&#xff1b;个人…

【力扣每日一题】2023.8.3 删除注释

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 这道题属于模拟题&#xff0c;我们实际运用场景是使用正则表达式&#xff0c;并且我看评论区也有不少大佬也是用的正则&#xff0c;而我就…

如何解决电脑无声问题:排除故障的几种常见方法

大家好&#xff0c;今天我们来讨论一下处理电脑没有声音的故障。当你突然发现电脑静音无声时&#xff0c;需要逐步排除可能的问题&#xff0c;但总体而言&#xff0c;声音故障是相对容易解决的。接下来&#xff0c;我们将介绍一些排除电脑无声问题的方法。 第一步&#xff1a;…