程序的编译和调试

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.mzph.cn/news/19847.shtml

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

相关文章

解决SVN或GIT忽略提交文件的问题

背景 使用IDEA 的SVN插件提交文件是总是会提交一些不需要提交的文件; 我们可以通过一些简单设置忽略这些文件。 git 在项目根目录新建文本文件&#xff0c;修改后缀为.gitignore 文件中添加内容 *.iml .project .gradle/ .idea/ target/ build/ .vscode/ .settings/ .facto…

Elasticsearch:语义搜索 - Semantic Search in python

当 OpenAI 于 2022 年 11 月发布 ChatGPT 时&#xff0c;引发了人们对人工智能和机器学习的新一波兴趣。 尽管必要的技术创新已经出现了近十年&#xff0c;而且基本原理的历史甚至更早&#xff0c;但这种巨大的转变引发了各种发展的“寒武纪大爆炸”&#xff0c;特别是在大型语…

SAP数据库表维护视图生成器的使用

在SAP中&#xff0c;经常需要自定义数据库表。而且可能需要人工维护数据库表中的数据&#xff0c;可以通过SM30进行维护数据&#xff1b;但是SM30事务的权限太大&#xff0c;不适宜将SM30直接分配&#xff1b;因此&#xff0c;可以通过给维护表分配事务代码&#xff0c;来达到控…

无涯教程-Perl - 环境配置

在开始编写Perl程序之前&#xff0c;让我们了解如何设置我们的Perl环境。 您的系统更有可能安装了perl。只需尝试在$提示符下给出以下命令- $perl -v 如果您的计算机上安装了perl&#xff0c;那么您将收到以下消息: This is perl 5, version 16, subversion 2 (v5.16.2) b…

MySQL数据库——DQL操作——基本查询

文章目录 前言事前准备——测试数据整表查询指定列查找别名查询MySQL运算符条件查询模糊查询排序查询聚合查询分组查询分组之后的条件筛选 分页查询将整张表的数据插入到另一张表中 前言 MySQL数据库常见的操作是增删查改&#xff0c;而其中数据的查询是使用最多&#xff0c;也…

Modbus TCP转Profinet网关modbus tcp转以太网

大家好&#xff0c;今天我们来聊一聊如何使用捷米特的Profinet转modbusTCP协议转换网关在博图上进行非透传型配置。 1, 首先&#xff0c;我们需要安装捷米特JM-TCP-PN的GSD文件&#xff0c;并根据现场设备情况配置modbusTCP地址。然后&#xff0c;在博图中添加该GSD文件&#x…

了解垃圾回收算法

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ 垃圾回收&#xff08;Garbage Collect&#xff09;是Java语言中的一种自动内存管理机制&#xff0c;用于自动回收不再使用的对象所占用的内存空间。Java虚拟机会自动追踪和…

算法39:Excel 表列序号

一、需求 给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1&#xff1a; 输入: columnTitle “A” 输出: 1 示例 2&…

uC-OS2 V2.93 STM32L476 移植:系统启动篇

前言 前两篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程&#xff0c;下载了 uC-OS2 V2.93 的源码&#xff0c;并把 uC-OS2 的源文件加入 Keil MDK5 工程 本篇适配 uC-OS2 的 系统定时器&#xff08;Systick&#xff09;与 PendSV_Handler&#xf…

leetcode 763. 划分字母区间

2023.8.3 本题的关键是要确保同一字母需要在同一片段中&#xff0c;而这就需要关注到每个字母最后一次出现的位置。 思路&#xff1a;用一个哈希表保存每个字母&#xff08;26个&#xff09;最后一次出现的位置。然后从头遍历&#xff0c;不断更新最右边界&#xff0c;直到当前…

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业 tbms

​ 功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查…

[数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北

MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库&#xff0c;用于处理移动物体的轨迹数据。它提供了一组强大的工具&#xff0c;可以轻松地加载、分析和可视化移动物体的轨迹。通过使用MovingPandas&#xff0c;用户可以轻松地处理和分析移动对象数据&#x…

[JAVA基础]自动拆装箱NPE问题

1.自动拆装箱场景 自动装箱 当把字面量转换成包装类的时候会自动装箱 比如&#xff1a; Integer a 1; Integer b 1; 自动拆箱 当你对包装类的对象进行运算&#xff08;如加法、减法等&#xff09;时&#xff0c;Java会自动进行拆箱操作。拆箱是将包装类型的对象转换为相应的基…

登月再进一步:Apollo自动驾驶的里程碑

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ 解决算法&#xff0c;一个专栏就够了★ ★ 架…

数据结构 | 递归

目录 一、何谓递归 1.1 计算一列数之和 1.2 递归三原则 1.3 将整数转换成任意进制的字符串 二、栈帧&#xff1a;实现递归 三、递归可视化 四、谢尔平斯基三角形 五、复杂的递归问题 六、动态规划 一、何谓递归 递归是解决问题的一种办法&#xff0c;它将问题不断地分…

Google Colab 部署 Stable Diffusion Webui

1. 下载 vae 访问: https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.ckpt 根据下图的红圈部分&#xff0c;点击下载。 将其上传至GoogleDrive根目录 点击新建后&#xff0c;然后点击上传文件。 2. 访问 colab 首先第一步…

数据结构——单链表

无头单向非循环链表的建立 前言——什么链表链表形象图链表分类 一、Single_linked_list.h头文件的建立二、Single_linked_list.c功能函数的定义Single_linked_list_test.c主函数的定义四、代码运行测试五、Single_linked_list完整代码演示&#xff1a;总结 前言——什么链表 链…

一条自由游动的鲸鱼

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>鲸鱼</title><style>#canvas-container {width: 100%;height: 100vh;overflow: hidden;}&l…

HTML之表单标签

目录 表单标签 Form表单 定义&#xff1a; 基本语法结构&#xff1a; form属性&#xff1a; enctyoe属性 fieldeset标签 fieldeset属性 legend标签 label标签 优势 label属性 input标签 input属性 input标签中的type属性 text text输入框有以下配套属性 searc bu…

太魔幻了!计算机就业哀鸿遍野,而高考生疯狂涌向计算机专业

在张雪峰推荐的几大专业里&#xff0c;计算机专业是其中之一。近几年&#xff0c;计算机专业报考热度不减&#xff0c;但就业前景却令人堪忧&#xff0c;互联网裁员接二连三&#xff0c;许多码农找不到工作。 一位网友感叹&#xff1a;一边是计算机就业哀鸿遍野&#xff0c;一…