嵌入式入门——Linux本地软件开发模式

Linux本地软件开发模式的基本步骤如下:

1、程序编辑

# vi  debug.c

编辑器:vi
2、程序编译

# gcc  debug.c  -o  debug  -g

编译器:gcc
3、程序运行

# ./debug

4、程序调试

# gdb  debug

调试器:gdb
5、程序管理

#make  Makefile

项目管理工具:make

其图示结构如下:
在这里插入图片描述

1、程序编辑

       程序编辑我使用的是vi编辑器(Visual Interface)。vi是Linux中最常用的标准的应用最广泛的文本编辑器。它是一种模式编辑器,即不同的按键可以更改不同的“模式 (mode)”;其主要有三种操作模式:一般模式、编辑模式和命令行模式。
       在Linux终端输入“vi filename”此时进入vi一般模式
       在一般模式输入i/a即进入编辑模式
       当编辑完成,按“Esc”回到一般模式,这时输入“:wq”保存退出。(从编辑模式切换不到命令模式)
图示结构如下:
在这里插入图片描述

2、环境变量修改

       环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,常见的环境变量如下 :
$PATH :决定了shell将到哪些目录中寻找命令或程序
$HOME :当前用户主目录
$SHELL :是指当前用户用的是哪种Shell。
$HISTSIZE :是指保存历史命令记录的条数
$LOGNAME :是指当前用户的登录名。
$HOSTNAME :是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
$LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
       添加环境变量使用export命令:
       命令格式: export 环境变量名=内容
注意:"="两边不能空格
       这里分为两种基本添加方法:

  1. 临时添加
    临时添加只对当前的终端有效,如果当前终端关闭,则添加
    的环境变量就不存在
  2. 永久添加
    在Linux 系统中,有些文件在系统启动起来的时候或用户登录的时候会自动执行。如/etc/profile,这是一个shell脚本文件,任何用户登录的时候都会执行。
    我们可以把环境变量添加到/etc/profile中,这样在任何时候,我们的环境变量都有效。
    A.使用超级用户权限打开
    /etc/profile文件,在终端输入:sudo gedit /etc/profile(sudo表示临时获得roott权限)。在文件末尾添加:“export PATH=/home/cyg:$PATH”然后保存关闭。
    B.添加完后,如果想让环境变量生效,可以重启电脑,也可以使用命令source,如:source /etc/profile

3、程序编译

编译分为:预处理 – 编译 – 汇编 – 链接 四步
图示结构如下:
在这里插入图片描述
       GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,而且gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。
       其中,GCC所支持的后缀名及解释如下表:
在这里插入图片描述gcc最基本的用法是:

gcc [options] file... 

其中option是以“-”开始的各种选项,file是相关的文件名。在使用gcc的时,必须给出必要的选项和文件名。
在这里插入图片描述

GCC又可以分为四个阶段:
  1. 预处理阶段:
    在该阶段,对包含的头文件(#include)和宏定义(#define、#ifdef等)进行处理 。可以使用gcc的选项“-E” 让gcc在预处理结束后停止编译过程。
# gcc –S hello.i –o hello.s
  1. 编译阶段:
    在这个阶段中,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
# gcc –S hello.i –o hello.s
  1. 汇编阶段:
    汇编阶段是把编译阶段生成的“.s”文件转成目标文件。
# gcc –c hello.s –o hello.o
  1. 链接阶段:
    在成功编译之后,就进入链接阶段。系统把源文件所需要的标准头文件所声明的函数都放在名为libc.so.6的库文件中去,在没有特别指定时,Gcc到系统默认的搜索路径“usr/lib”下进行查找,这样就能实现函数“printf”了,这也是链接的作用。
# gcc hello.o –o hello

4、程序运行

# ./debug

5、程序调试

# gdb  debug

6、写工程管理器

       工程管理器,顾名思义,是指管理较多的文件 。Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作,具体如下:
查找当前目录下的Makefile文件
初始化文件中的变量
分析Makefile中的所有规则
为所有目标文件创建依赖关系
根据依赖关系,决定哪些目标文件要重新生成
执行生成命令

makefile基本结构:

       makefile是make读入的惟一配置文件,因此本节的内容实际就是讲述makefile的编写规则。在一个makefile中通常包含如下内容:
       需要由make工具创建的目标体(target),通常是目标文件或可执行文件;(如之前的hello.o, hello)
       要创建的目标体所依赖的文件(dependency_file, 一般是头文件);
       创建每个目标体时需要运行的命令(command),这一行必须以制表符(tab键)开头。(如gcc命令)
Makefile规则的一般形式如下:

target:dependency dependency
(tab)<command> 

       一般情况下,调用make命令可输入:

# make target

       target是Makefile文件中定义的目标之一,如果省略target,make就将生成Makefile文件中定义的第一个目标。对于上面Makefile的例子,单独的一个make命令等价于:

# make test

       因为test是Makefile文件中定义的第一个目标,make首先将其读入,然后从第一行开始执行,把第一个目标test作为它的最终目标,所有后面的目标的更新都会影响到test的更新。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值