(新手篇)嵌入式Linux C 语言编程环境

嵌入式Linux C 语言编程环境有四部分

1.编译器vi

  1.1 vi的基本模式

    1.1.1 命令模式(Command Mode)

        在该模式下输入命令来控制屏幕光标的移动,字符、单词或行的删除,移动复制段落。

    1.1.2 插入模式(Insert Mode)

        按【ESC】键可以回到命令行模式。按字母【i】键进入插入模式,就可以写代码了。

    1.1.3 低行模式(Last Line Mode)

        命令模式下,按【:】键进入低行模式。如“:q”离开 “:w”保存。

2.编译链接器 GCC

  2.1 GCC 的编译流程 4个步骤

    预处理(Pre-Processing)

    编译( Compiling)

    汇编( Assembling )

    链接(Linking )

  2.2 流程分析

2.2.1  GCC 使用的基本语法:  

       gcc [option | filename]  //option 指定选项 filename 要编译的文件。

     2.2.2  预处理(Pre-Processing)阶段

        gcc -E -o [目标文件] [编译文件]

      选项“-E” 使编译器在预处理结束时就停止编译,“-o” 是指定GCC 输出的结果。// ".i"的文件是经过预处理的C源程序。“ XXXX.h”文件是不能进行编译的

     2.2.3 编译( Compiling)阶段

        GCC检查代码是否有错。在检查无误后,把代码翻译成汇编语言。

        gcc -S -o [目标文件] [编译文件] //生成".s" 文件

     2.2.4   汇编( Assembling )阶段

        把编译阶段的“.s”文件生成目标文件 gcc - c XXXX.s -o XXXX.o

     2.2.5 链接(Linking )阶段

        系统会把函数实现都放入名为libc.so.6  的库文件中。默认路径是/lib或/usr/lib

        gcc hello.o -o hello

        运行 ./hello

3.调试器 GDB

    3.1  进入GDB

     [[email protected] gdb] #gdb [可执行文件] //首先要 gcc [filename] -g

    3.2 查看文件

      在GDB 中输入”1“ 就可以查看程序的代码 

    (gdb) l //l(list)

    3.3 设置断点 (gdb)b [行号] 代码运行到第几行之前停止(没有运行到这一行)

    3.4 查看断点处情况

      (gdb)info b

    3.5 运行代码 (gdb)r

    3.6 查看变量 (gdb)p n // “p 变量名”

    3.7 观察变量 (gdb) watch n

    3.8 单步运行 (gdb)n //"next"

    3.9程序继续运行和退出 (gdb) c    (gdb) q//

4.项目管理器 make

    是一种控制编译或者重复编译代码的工具,自动管理软件软件编译的内容、方式和时机,使程序员能把精力放在代码的编写上而不是组织上。

  

  

  

(新手篇)嵌入式Linux C 语言编程环境

时间: 2024-10-11 07:25:25

(新手篇)嵌入式Linux C 语言编程环境的相关文章

嵌入式 Linux C语言(十一)——C语言模块化编程

嵌入式 Linux C语言(十一)--C语言模块化编程 一.C语言模块化编程 所谓模块化编程,就是指一个程序包含多个源文件(.c 文件和 .h 文件),每个模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明.C语言模块化编程中对.c..h文件的潜规则: 1..c 文件主要负责实现,也就是定义函数:.h 文件主要负责声明,比如函数声明.宏定义等,结构的定义.自定义数据类型一般也放在头文件中,不能在.h文件中定义变量.将一个功能模块的代码单独编写成一个.c文件,然后把该

嵌入式Linux C语言(六)——内存字节对齐

嵌入式Linux C语言(六)--内存字节对齐 一.内存字节对齐简介 1.内存字节对齐 计算机中内存空间都是按照字节划分的,从理论上讲对任何类型的变量的访问可以从任何地址开始,但是在程序实际编译过程中,编译器会对数据类型在编译过程中进行优化对齐,编译器会将各种类型数据按照一定的规则在空间上排列,而不是顺序的排放,这就是内存字节对齐. 2.内存字节对齐原因 不同硬件平台对存储空间的处理是不同的.一些平台对某些特定类型的数据只能从某些特定地址开始存取.比如某些架构的CPU在访问一个没有进行对齐的变量

嵌入式linux C++语言(七)——继承与派生

嵌入式linux C++语言(七)--继承与派生 一.继承 在C++编程中软件可重用性(software reusability)是通过继承(inheritance)机制来实现的.类的继承,是新的类从已有类那里得到已有的特性.或从已有类产生新类的过程就是类的派生.原有的类称为基类或父类,产生的新类称为派生类或子类. 派生类的声明:class 派生类名:[继承方式] 基类名{派生类成员声明:};    一个派生类可以同时有多个基类,这种情况称为多重继承,派生类只有一个基类,称为单继承. 继承方式规

嵌入式linux C++语言(二)——C++对C语言基础语法的扩展

嵌入式linux C++语言(二)--C++对C语言基础语法的扩展 C++是基于C语言扩展发展而来的面向对象的程序设计语言,本文将主要讨论C++语言基于C语言扩展的方面. 一.类型增强 1.类型检查更严格 在C语言中: const int a = 100; int *p = &a; 在C++语言中: const int a = 100;//必须在定义的时候初始化 const int *p = &a; 在C++语言中不能隐式转换数据类型. error: invalid conversion

嵌入式linux C++语言(一)——C++简介

嵌入式linux C++语言(一)--C++简介 一.C++简介 C语言作是结构化和模块化的语言,适合处理较小规模的程序.对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言并不合适.为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming)思想,支持面向对象的程序设计语言应运而生.Smalltalk 就是当时问世的一种面向对象的语言.在实践工作中,由于C语言的广泛使用,在C语言的基础上根据面向对象的思想发展了C语言,形成了C

嵌入式linux C++语言(五)——友元

嵌入式linux C++语言(五)--友元 面向对象编程的类的设计机制实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,是类与外部的通信接口.在实践中,类外的某些函数需要频繁地访问类的数据成员,将类外的函数定义为类的友元函数.除了友元函数外,还有友元类,两者统称为友元.友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员. 友元可以是一个函数,该函数被称为友元函数. 一.

嵌入式 Linux C语言(八)——存储类型、作用域、生命周期、链接属性

嵌入式 Linux C语言(八)--存储类型.作用域.生命周期.链接属性 一.存储类型 C语言中,每个变量和函数都有两个属性:数据类型和数据的存储类型. 变量的存储类型是指存储变量值的内存类型.变量的存储类型决定变量何时创建.何时销毁以及它的值将保持多久.计算机中有三个地方可以用于存储变量:普通内存,运行时堆和栈,硬件寄存器.变量的存储类型取决于声明变量的位置. C语言存储类别说明符: 说明符 用    法 auto 只在代码块内变量声明中被允许, 表示变量具有本地生存期 extern 出现在顶

嵌入式 Linux C语言(十)——静态库函数和动态库函数

嵌入式 Linux C语言(十一)--静态库函数和动态库函数 一.静态链接库 静态链接库是obj文件的一个集合,通常静态链接库以".a"为后缀,名字格式一般为libxxx.a,由程序ar生成.静态链接库是在程序编译过程中链接的,已经将调用的相关函数拷贝到程序内部,程序运行时和静态链接库已经没有任何关系. 1.静态链接库的创建 A.编写源码库文件 源码库文件一般包含.c和.h文件, hello.c文件: #include <stdio.h> void display(void

嵌入式linux C语言(一)——位运算的使用

嵌入式linux C语言(一)--位运算的使用 ARM是内存与IO统一编址,SoC中有很多控制寄存器,通过对这些寄存器进行位运算对这些控制寄存器进行设置,进而控制外设功能.在修改寄存器某些位的过程中不能修改其他的位. 一.位运算基础 C语言基本的位操作符有与.或.异或.取反.左移.右移六种位运算符.如下表所示: 符号 描述 运算规则 & 与 两个位都为1时,结果才为1 | 或 两个位都为0时,结果才为0 ^ 异或 两个位相同为0,相异为1 ~ 取反 0变1,1变0 << 左移 各二进位