嵌入式Linux基础学习

前言

笔者一直从事嵌入式的相关工作,因工作需要,大部分时间都是通过在windows系统下通过相关的编译器如keil,codewarrior,S32DS等相关编译进行代码的编译和调试。之前对linux有一些了解,零零散散也看过一些博客和资料,但是一直没有系统的将Linux好好学习并积累下来。所以,现打算开一个新的系列的博客,将我在学习linux内容的过程以及遇到的问题进行梳理,因能力原因,此部分博客的内容仅供大家作为参考,同时笔者作为一个刚开始进行linux系统学习的新人欢迎大家留言交流和讨论。

一、从hello world开始

笔者在观看嵌入式linux的教学视频中看到了所使用的linux发行版的环境,之前也是通过使用VMware虚拟机加载ubuntu12.0的镜像来在上面学习的,后来切换到了双系统,在ubuntu系统下进行学习。

1.vim的安装

当时看到视频中有vim文本编辑器的使用,想要亲自实践一下,创建一个源文件进行编译,实现一个最简单的打印hello world的功能,但是发现并没有vim的文本编辑器-_-! ,于是查找了相关指令,在ubuntu上安装了vim,具体指令如下:

// install vim 
sudo apt-get install vim

除了vim的编辑器之外,其他的工具也可以使用上述指令进行安装

2.获取root权限

如果你没有获取root权限,会提示你输入密码来获取权限进行安装。如果你想要获取root权限,在最高权限下进行相关操作,需要执行以下的命令的操作来获取root权限:

// get root 
sudo -s

3.检测vim版本

根据提示信息填写密码获取到root权限,同时安装vim过程中根据提示按Y进行安装,安装完之后通过观察vim的版本信息来确认是否安装成功:

// get vim version
vim -v

得到如下的界面:
请添加图片描述

4.使用vim进行源文件的编辑

通过vim来进行第一个hello world的打印程序的编写。

// Edit a vim file
vim test.c

在vim中按i键进行进行如下代码的编辑:

//hello world
#include "stdio.h"
int main()
{
	printf("hello world\n");
	return 0;
}

在输入代码之后按Esc输入:wq进行保存并推出;

5.使用gcc进行编译

这个时候需要对所编辑的test.c的源代码进行编译,所使用到的工具是gcc,此时输入如下指令生成可执行的.o文件:

// get test.o
gcc test.c -o test.o

6.hello world

在生成了test.o的可执行文件之后我们通过如下指令来执行该文件让其打印出hello world:

//hello world
./test.o

请添加图片描述

7.查看文件的属性

到此大家基本上实现了对一个源文件在PC端通过GCC进行编译的最基本方法。下面我们看一下这个可执行文件test.o的具体属性:

file test.o

请添加图片描述

在这里大家可以看到的是此elf文件是一个32位小端模式的基于x86架构下的Intel模式的可执行文件,文件可以烧录进x86架构下的芯片(以8086为代表)主要用于PC端的处理器。

但是,如果我们想要将其烧录进行ARM架构下的微处理器如STM32这种我们常用的开发板中进行执行和调试的话,则此elf的属性不支持此操作,因为它的属性是Inter模式。想要实现把源文件test.c编译成支持arm架构下的模式的elf文件的话,则需要使用交叉编译器,即arm-linux-gcc

二、arm-linux-gcc的交叉编译环境搭建

笔者在网上搜集了很多资料和教程关于如何进行交叉编译工具的安装和使用的,但是之前一直没有成功,经过梳理和分析,将我成功安装arm-linux-gcc4.4.3的过程罗列如下,供大家进行参考

1.arm-linux-gcc工具包的解压

需要先在网上安装下载一个arm-linux-gcc-4.4.3.tar.gz的压缩包,然后将它copy到一个你的文件目录下,笔者这里将它放到了/tmp的目录下,然后调用如下指令进行解压:

tar -zxvf arm-linux-gcc-4.4.3.tar.gz

2.修改文件的读写权限

然后也是最关键的一步,笔者在网上的相关资料中并未发现的,此时你解压缩出来的这个文件夹,如果是用root权限进行操作的话,可能会改变文件的操作权限,此时应该获取该文件的权限,使后续操作能够对其实现修改,以实现arm-linux-gcc的直接调用,而不必每次都调用到指定路径的文件夹下去调用。修改权限的指令如下:

sudo chmod 777 arm-linux-gcc-4.4.3

笔者的压缩包解压缩之后的文件夹为arm-linux-gcc-4.4.3,所以修改的是这个文件夹的权限。

3.修改启动项的路径

然后通过如下指令,将你要执行的文件路径加载到启动项中,这样直接调用:

sudo gedit /etc/profile

在文本的最后一行添加如下代码,其中你添加的路径需要指定到你的arm-linux-gcc的相关文件的bin文件的目录下,笔者的目录为/tmp/arm-linux-gcc-4.4.3/bin,大家根据自己的路径自行修改:

export PATH=$PATH:/tmp/arm-linux-gcc-4.4.3/bin

请添加图片描述

其中tmp文件夹是一个特殊的文件夹,其所储存的文件会定期删除,所以建议大家将文件和路径设置到usr这类文件夹当中。笔者此处只是以tmp文件夹为示例,仅供大家参考

添加好之后调用如下直接,对修改的文件进行编译执行:

source /etc/profile

4.验证arm-linux-gcc设置是否成功

此时可以调用如下指令检测arm-linux-gcc工具是否成功设置了:

arm-linux-gcc -v

如出现了如下界面,则证明设置成功:
请添加图片描述

5.使用arm-linux-gcc进行交叉编译

此时可以使用如下指令进行交叉编译:

arm-linux-gcc test.c -o test_arm.o

查看test_arm.o的elf文件的属性类型,可以看到其修改为支持到arm架构下执行的文件了,这样的文件就可以下载到STM32这种芯片上进行执行和调试了:

file test_arm.o

请添加图片描述

结束语

关于最基础的相关环境的搭建内容部分就先整理到这,后续会对如何进行程序调试以及在linux环境下进行相关开发板的驱动调试和代码开发的内容进行更新。
原创不易,多谢大家的支持,谢谢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值