虚拟机linux怎么查看交叉编译环境
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟机linux怎么查看交叉编译环境相关的知识,希望对你有一定的参考价值。
1.安装源码编译环境(配置gcc),在ubuntu安装完成已经有gcc(gcc是由GNU之父Stallman所开发的linux下的编译器,全称为GNU Compiler Collection, 目前可以编译的语言包括:C, C++, Objective-C, Fortran, Java, and Ada.),但是gcc还不能编译文件,因为缺少一些头文件.那么我们就要来配置这些头文件。在这里我们需要安装build-essential这个软件包,安装了这个包会自动安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必须的软件和头文件的库。安装build-essential,你可以在新立得搜索然后安装或者在终端里输入:sudo apt-get install build-essential
2.除了编辑器之外,我们还需要文本编辑器来编写程序源码,Ubuntu中其实已自带编辑器,但是目前较为著名而且流行的vi / vim 编辑器可以通过在Ubuntu的软件中心下载,或是在终端输入指令下载,指令如下:
sudo apt-get install vim-full
3.解压包:arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2,(注:不同文件包类型,指令有区别,如bz2 -xf)如下指令:
sudo tar -xf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 OR sudo tar -xf arm-linux-gcc-3.4.6-glibc-2.3.6.tgz -C /work/
我的Ubuntu使用第二个指令解压后解压包放在了work目录下。
4.修改环境变量,把交叉编译器的路径加入到PATH:方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用),指令如下:
sudo gedit /etc/bash.bashrc
然后在文件的末尾空白处加入一下代码:
if [ -d /work/gcc-3.4.6-glibc-2.3.6 ] ; then
PATH=/work/gcc-3.4.6-glibc-2.3.6/arm-linux/bin:"$PATH"
fi
即完成路径的添加。
5.使新的环境变量生效,不用重启电脑。输入下面指令:
source /etc/bash.bashrc
6.检查是否将路径加入到PATH。输入下面指令:
echo $PATH
若显示的内容中含有:/usr/local/arm/4.3.2/bin 说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
7. 测试是否安装成功,下面的命令会显示arm-linux-gcc信息和版本。 参考技术A 输入指令:echo $PATH
搭建树莓派交叉编译环境
本学期选了嵌入式开发课程,所以第一步就是要准备环境。硬件环境自不必说,购买了树莓派二代、sd卡,读卡器、路由器、网线这些都是以前就有的。软件环境的搭建包括如下几步:
1.搭建虚拟机Linux环境
2.烧录树莓派系统
3.在虚拟机linux环境中搭建本地开发与编译环境
4.在虚拟机linux上搭建交叉编译环境
5.开发一段简单的程序,通过本地编译后,再进行交叉编译。之后将编译好的程序放到树莓派上执行进行测试。
具体步骤:
1.搭建虚拟机linux
理论上说,在windows环境下如果也能找到满足要求的交叉编译工具链,那么也可以不装linux。但是考虑到windows环境下的工具比较难找,而且嵌入式系统本身也是基于linux的特定版本,进行交叉编译时在兼容性上更不容易出现问题,所以还是需要先安装一个linux环境。我采用的是virtualbox虚拟机软件。virtualbox是一个轻量级的虚拟机软件,安装起来比较方便,使用中也还算稳定。安装过程很简单,此处略过。在virtualbox中加载ubuntu安装镜像文件*.iso,启动后安装,过程略。
2.烧录树莓派的映像文件,使之可以正常启动。
根据手册的说明,需要将从树莓派官网下载的系统映像文件raspbian-jessie.img 烧录到sd卡上,以使树莓派可以正常使用。在这里我开始犯了一个错误。想到烧录文件,习惯性的采用了windows下的常用软件ultraiso,烧录完成后插到树莓派上加电。没有任何输出,让我一度不知道哪里出错。后来严格按照手册里说的linux命令:sudo dd if=raspbian-jessie.img of=/dev/sdb bs=2M 进行烧录,系统可以正常启动了。
分析:ultraiso属于文件刻录的性质,但其并不改变卡/磁盘的分区结构。所以刻录完的sd卡分区格式不符合要求。而dd命令属于块数据输出,在烧录数据的同时也变更了sd卡的分区格式。
此外,此步骤还发生了一点意外。开始我烧录了一个不带桌面的精简版系统。当使用sudo apt-get install lxde命令添加桌面时,报空间不足,无法安装。于是重新烧录标准版,但启动到一半时系统中断死机。在想不出理由的情况下,使用sudo fdisk删除sd卡上所有分区,重新烧录,终于成功了。
系统启动后,需要考虑的是主机与目标机的连接问题。树莓派系统默认是开着ssh服务的。所以当用网线连接到路由器,并获得ip后,用命令ssh [email protected]是可以连接目标机的。但考虑到有图形界面还是要更方便一些。于是安装vnc服务,方法是命令:sudo apt-get install tightvncserver ,之后执行tightvncserver即开启了vnc远程桌面服务。此时用vnc客户端工具即可进行可视化操作。
3.在linux下搭建本地开发环境
通常linux的大多数发行版默认包含gcc等工具,但为了方便,我们也可以安装eclipse的linux版本。使用此类IDE工具可以提高开发效率。
方法是,在linux下执行 sudo apt-get install eclipse
安装完成后可以看到eclipse的启动图标。正常情况下可以顺利启动eclipse。此时的eclipse默认是Java开发环境,为了开发c程序,我们还需要增加一些插件。方法是:在eclipse的help-install new software菜单中指定网址:http://download.eclipse.org/releases/indigo ,选择collaboration-Mylyn Context Connector: c/c++ Development,这样就把开发c/c++项目的插件安装上了。之后还需要执行一下sudo apt-get install build-essential,把编译环境需要用到的文件装上。就完成了本地开发环境的搭建。
正常启动eclipse后,可以在new 菜单中看到c/c++项目,如下图
4.搭建交叉编译环境
通常网上已有经过验证的交叉编译工具链,需要下载下来即可。首先安装Git工具:sudo apt-get install git,之后下载:git clone git://github.com/raspberrypi/tools.git
等待下载完成,即可看到包含了若干种类的编译工具。我的linux是64位版本,所以使用gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc即可。
加入环境变量,编辑.bashrc文件,在末尾加入export PATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
实验例子,写一段c代码
本地执行成功,之后进行交叉编译:
arm-linux-gnueabihf-gcc tst.c –o tst 生成tst执行文件,传输到目标平台:
sftp [email protected] 连接后,用put /home/xx/workspace/rr/tst /home/pi/tst
执行成功
5.直接使用eclipse进行目标平台编译
使用手工方式(写c代码、写makefile文件、手工编译等)还是比较繁琐的,另外也容易出错。既然集成开发环境可以编译本地代码,自然也可以进行交叉编译。于是经过一番探索,完成了这个步骤。
首先在项目属性的c/c++ Build的Settings菜单中,点Manage Configurations,增加一项新配置(我这里起名ARM)并激活,修改GCC C Compiler和GCC C Linker中的命令,采用前面提到过的arm-linux-gnueabihf-gcc。注意此处用了绝对路径,因为之前加环境变量PATH是加到了bash.rc中,如果加到.profile中就不用这么麻烦了。
之后,Project-Build All,成功。
本文出自 “空空如也” 博客,转载请与作者联系!
以上是关于虚拟机linux怎么查看交叉编译环境的主要内容,如果未能解决你的问题,请参考以下文章
Hi3516开发笔记:Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析
Hi3516开发笔记:Hi3516虚拟机交叉开发环境搭建之交叉编译Qt