嵌入式交叉编译器如何构建
第一步,你需要下载QT源代码(4.8的编译比较容易),然后通过 ./configure (参数自己定,不懂看readme)接下来就是在QT CREATE里面配置了,如下: 工具-->选项--->构建和运行 1. 编译器: 点击添加: "名称"随意 "编译器路径" **/arm-none-linux-gnueabi-g...
2. 嵌入式ARM linux操作系统中如何构建交叉开发环境
这个问题相当专业了,之前我去周立功那边了解过的。
按照以下步骤进行安装:
1) 安装32位的兼容库和libncurses5-dev库
在安装交叉编译工具之前需要先安装32位的兼容库和libncurses5-dev库,安装32兼容库需要从ubuntu的源库中下载,所以需要在Linux主机系统联网的条件下,通过终端使用如下命令安装:
vmuser@Linux-host ~$sudo apt-get install ia32-libs
若Linux主机系统没有安装32位兼容库,在使用交叉编译工具的时候可能会出现错误:
-bash: ./arm-fsl-linux-gnueabi-gcc: 没有那个文件或目录
在终端中使用如下命令则可以安装libncurses5-dev库。
vmuser@Linux-host ~$sudo apt-get install libncurses5-dev
如果没有安装此库,在使用make menucofig时出现如下所示的错误:
*** Unableto find the ncurses libraries or the
*** required headerfiles.
*** 'makemenuconfig' requires the ncurses libraries.
***
Installncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1
make: *** [menuconfig] 错误 2
2) 安装交叉编译工具链
将交叉编译工具“gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2”文件通过U盘的方式拷贝到Linux主机的“/tmp”目录下,然后执行如下命令进行解压安装交叉编译工具链:
vmuser@Linux-host ~$ cd /tmp
vmuser@Linux-host ~$ sudo tar -jxvfgcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 -C /opt/
vmuser@Linux-host /tmp$ # 输入vmuser用户的密码“vmuser”
执行完解压命令后,交叉编译工具链将被安装到“/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0”目录下。交叉编译器的具体目录是“/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin”,为了方便使用,还需将该路径添加到PATH环境变量中,其方法为:修改“/etc/profile”文件,具体操作方法如下:
在终端中输入如下指令
vmuser@Linux-host ~$ sudo vi /etc/profile # 若提示输入密码,则输入“vmuser”
用vi编辑器打开“/etc/profile”文件后,在文件末尾增加如下一行内容:
export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin
文件修改并保存后,再在终端中输入如下指令,更新环境变量,使设置生效。
vmuser@Linux-host ~$source /etc/profile
在终端输入arm-fsl-linux-gnueabi-并按TAB键,如果能够看到很多arm-fsl-linux-gnueabi-前缀的命令,则基本可以确定交叉编译器安装正确,如下图所示。
3. 如何为嵌入式开发建立交叉编译环境
如果你确实需要自己建立交叉开发环境,那我们建议您使用某些特定的脚本,比如 crosstool 等; 我们觉得你还是先暂时不要把时间花在如何建立这个环境上,去下载个已经做好了的来使用吧
4. 如何搭建交叉编译环境
交叉编译环境就是在Windows下的东西拿到Linux下编译运行吧,我个人是在Linux启动了samba服务器,然后将文件夹映射到Windows下,在Windows下使用vc 6.0编程序然后到Linux下编译的。不知道能不能对你有些帮助。
下载的rpm包,可以使用rpm -ivh 包路径进行安装
5. 如何利用Eclipse C/C++搭建嵌入式ARM开发环境
由于觉得在Linux下不方便编写代码,所以准备在windows上搭建开发环境,其实在Linux上也搭建好了,但是使用起来不是很人性化,尤其是文件比较多的时候就很麻烦。下面就选择在windows上用Eclipse做开发。【后来发现还是需要在Linux下编程,因为Windows下没法包含Linux下的一些头文件,所以下面也介绍Linux环境下的Eclipse搭建】。
Windows下的Eclipse环境搭建:
1. 下载并安装Eclipse C/C++
2. 下载交叉编译器,之前在Linux都用的arm-linux-gcc,后来使用TI的ti-sdk-am335x-evm-08开发包,里面安装的编译器是arm-none-linux-gnueabi-gcc,都是能用的,所以我也选择了arm-none-linux-gnueabi-gcc作为交叉编译器,下载windows平台的编译器,然后安装。
下载地址:http://www.veryarm.com/arm-none-linux-gnueabi-gcc
3. 开启Eclipse的ssh远程登录功能,我分别开启了Beaglebone Black和Linux的ssh terminal,操作起来很是方便。
4. 新建C项目工程“hello”,编写简单的hello代码,注意选择交叉编译选项,交叉编译器前缀“arm-none-linux-gnueabi-”交叉编译器路径选择arm-none-linux-gnueabi-gcc安装的路径“…Linuxin”,在此文件夹下有arm-none-linux-gnueabi-gcc.exe、arm-none-linux-gnueabi-gdb.exe等,还有cs-make.exe,这里需要把“cs-make.exe”改成“make.exe”,因为Eclipse不认cs-make.exe编译的时候会报错的。
图文安装参考:http://www.linuxidc.com/Linux/2016-03/129577.htm
5. 调试(构建Ctrl+B)的时候会自动生成makefile,生成编译结果,放到ARM嵌入式平台运行就可以了,成功执行并输出“hello”。
Linux下的Eclipse环境搭建:
官网下载http://www.eclipse.org/downloads/
发下是收费的
sudo apt-get install eclipse直接就安装了
然后sudo eclipse –s启动后发现“窗口->打开视图”里面没有ssh远程登录的选项,网络一下发现它是Eclipse的插件,查询下这个软件:sudo apt-cache search Remote System Explorer,发现一个eclipse-rse,就是它了,然后直接安装:sudo apt-get install eclipse-rse
重启eclipse
新建工程时发现没有C/C++工程,只有Java工程,再次搜索sudo apt-cache search eclipse C/C++
发现其中一条:
eclipse-cdt - C/C++ Development Tools for Eclipse
继续安装:
sudo apt-get install eclipse-cdt
再次重启eclipse,就有了C/C++项目,高兴ing。
新建C工程,添加编译器:
arm-none-linux-gnueabi-
/opt/toolschain/4.4.3/bin
编写hello程序,编译OK,在BBB上执行,成功!
6. 如何搭建嵌入式开发的硬件环境
前言
首先,这个教程在仅使用附带的光盘镜像文件里的资料的情况下,所搭建的嵌入式 ARM 开发环境可以满足 ARM 核为 ARM920T 及 CORTEX-A8 的嵌入式开发需求。
其次,搭建针对处理器为 ARM920T 的开发环境步骤如下:
WINDOWS 系统:
1、 用 WINRAR 或 7zip 打开镜像文件 Linux-dev.iso,将/WIN32/Daemon_Tools_4.46.1.328.exe 拖出来,
安装后运行;
2、 使用 Daemon 加载镜像文件 Linux-dev.iso 后,找到并双击/vmplayer/VMware-player-5.0.1-894247.exe 运行,安装完成;
3、 将/VMware-linux-tools.iso 复制到任何地方,譬如 D:\Virtual Machines\ 文件夹下;4、 将文件夹/Ubuntu 复制到电脑的任何地方,譬如 D:\Virtual Machines\ 文件夹下;
5、 打开 VMware Player,这是一个免费的软件,所以不需考虑不能使用的情况,更不需破解。效果图如下:
嵌入式开发环境的搭建
点击”Open a Virtual Machine”,找到刚才复制的 Ubuntu 文件夹,选中 Ubuntu.vmx 这个文件:
嵌入式开发环境的搭建
后点击打开;
6、 点击”Edit virtual machine settings”,这里需要注意的是,若你的电脑 CPU 是单核的,需将”Processors”由 2 设置为 1,否则,不能运行。选择”CD/DVD (IDE)”,之后点击右边的”Browse…”,找到并选择刚才复制的 VMware-linux-tools.iso,之后点击”Options”进入另一个设置界面;
7、 选择第三个”Shared Folders”,在右边将其设置为”Always enabled”,再点击下面的”Add…”,选择一个在硬盘上新建的空文件夹,譬如 D:\Virtual Machines\shared 文件夹,点击”Next》”,之后点击”Enable this share”,最后在设置主界面点击”OK”完成设置;
8、 将虚拟光驱加载的光盘中 Linux 文件夹中的所有文件都复制到上一步新建的空文件夹,譬如
D:\Virtual Machines\shared 文件夹下;
9、 在 VMware Player 下点击图标 以运行虚拟机 Linux,启动后可以看到桌面上有一个光盘的图标;
10、 在 Linux 桌面右键后选择”Open in terminal”,之后切换到/tmp 目录:cd /tmp ;11、 执行命令 tar zxf /media/cdrom0/VMwareTools-9.2.2-893683.tar.gz ,等待约一分钟后运行完毕;
12、 切换目录:cd 。/vmware-tools-distrib/ ;
13、 执行命令:sudo 。/vmare-install.pl ,用户”user”的密码为 redeem2012 ;
14、 下面出现很多问题,[yes]或[no],那么就可以一直点击键盘 ENTER 键选择默认设置,直至安装完成;15、 人,活着,要有耐心——这个过程稍长,显示最后两行为”Enjoy, --the WMware team”时就安装完成了;
16、 以上几个步骤如下:
嵌入式开发环境的搭建
17、 执行命令:sudo reboot 以重启;
18、 启动后在桌面右键选择”Open in terminal”,输入命令:cd /mnt/hgfs/shared ,当然若之前选择的空享空文件夹名称与 shared 不一样,可能不是这个目录,唉,管不了这么多了;19、 查看目当下文件如下:
嵌入式开发环境的搭建
20、 安装 libusb-1.0.9.tar.bz2,依次输入以下命令:tar jxf libusb-1.0.9.tar.bz2 、
cd libusb-1.0.9 、 。/configure --prefix=/usr 、 make 、 sudo make install ,注意最后一步需要输入密码 redeem2012,完了之后返回原目录: cd 。。/ ;21、 安装 readline-6.2.tar.gz,依次输入以下命令:tar zxf readline-6.2.tar.gz 、 cd readline-6.2 、。/configure --prefix=/usr 、 make 、 sudo make install ,完了之后返回原目录:cd 。。/ ;
22、 安装交叉编译器:sudo tar arm-linux-gcc-3.4.5.tar.bz2 -C /home ;
23、 更改环境变量:gedit /home/user/.profile ,在最后一行添加这么一句:export PATH=$PATH:/home/user/gcc-3.4.5-glibc-2.3.6/bin ,保存后退出
24、 切换回用户主目录:cd ~ ;
25、 执行命令:tar jxf /mnt/hgfs/shared/JLink_Linux_V422.tar.bz2 ;
26、 依次执行以下命令:cd JLink_Linux_V422/ 、 sudo cp libjlinkarm.so.* /usr/lib ,现在就可以
运行 JLink 了: sudo 。/JLinkExe ,但要注意这么一点:由于现在运行的是 windows 系统下的虚拟机, Linux 操作系统无法访问到 JLink,那么就需要按下图所示选择将连接到电脑的 JLink 直接送给虚拟机中运行的 Linux。我没有 JLink,所以下图中没有,你需要自己选择硬件并点击箭头后再点击”connect”:
嵌入式开发环境的搭建
另外,下面需要安装 minicom,也需要按上图将串口连接到 Linux 操作系统;
27、 这一步安装minicom。将虚拟机文件夹 Ubuntu 下的 minicom_2.3-1ubuntu2_i386.deb 复制到shared文件下,之后执行命令:sudo dpkg --install /mnt/hgfs/shared/ minicom_2.3-1ubuntu2_i386.deb
到这一步,windows 系统下的嵌入式 ARM 开发环境搭建完成了。重启一下更好。
至于 Linux 系统下的配置,这要复杂得多,因为系统情况完全不一样,因而,这里不再给出,当然,所有的软件也跟上面的完全一样。
另外,minicom、JLink 的配置和使用,这里就不说了,自己到网上去找吧,若搞不好,就当自虐了。反正我已经送佛到西了,整个过程不需要仍何网络,不需要上网
所附的光盘镜像文件中还有一些 windows 下的软件,如 SecureCRT、arm-none-linux-gcc 等,这些也能用到,只不过我没那个心情讲更多了,以上的配置已经完全足够了。
网络是个好东西,没有网络,就没有 LINUX,也没有快速学习的条件。所以——现在,自学去吧。
7. 如何建立Linux下的ARM交叉编译环境
首先安装交叉编译器,网络“arm-linux-gcc”就可以一个编译器压缩包。
把压缩包放到linux系统中,解压,这样就算安装好了交叉编译器。
设置编译器环境变量,具体方式网络。如打开 /etc/bash.bashrc,添加刚才安装的编译器路径 export PATH=/home/。。。/4.4.3/bin:$PATH。这样是为了方便使用,用arm-linux-gcc即可,不然既要带全路径/home//bin/arm-linux-gcc,这样不方便使用。
编译c文件。和gcc编译相似,把gcc用arm-linu-gcc代替就是了。编译出来的就可以放到arm上运行了。</ol>
8. Linux嵌入式交叉编译工具链问题 浅谈
简介
交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc 3个部分组成。有时出于减小libc库大小的考虑,也可以用别的c库来代替glibc,例如uClibc、dietlibc和newlib。交叉编译工具链主要包括针对目标系统的编译器gcc、目标系统的二进制工具binutils、目标系统的标准c库glibc和目标系统的Linux内核头文件。第一个步骤就是确定目标平台。每个目标平台都有一个明确的格式,这些信息用于在构建过程中识别要使用的不同工具的正确版本。因此,当在一个特定目标机下运行GCC时,GCC便在目录路径中查找包含该目标规范的应用程序路径。GNU的目标规范格式为CPU-PLATFORM-OS。例如,建立基于ARM平台的交叉工具链,目标平台名为arm-linux-gnu。
交叉编译工具链的制作方法
分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。
通过Crosstool脚本工具来实现一次编译生成交叉编译工具链。
直接通过网上(ftp.arm.kernel.org.uk)下载已经制作好的交叉编译工具链。
方法1相对比较困难,适合想深入学习构建交叉工具链的读者。如果只是想使用交叉工具链,建议使用方法2或方法3构建交叉工具链。方法3的优点不用多说,当然是简单省事,但与此同时该方法有一定的弊端就是局限性太大,因为毕竟是别人构建好的,也就是固定的没有灵活性,所以构建所用的库以及编译器的版本也许并不适合你要编译的程序,同时也许会在使用时出现许多莫名的错误,建议你慎用此方法。
方法1:分步构建交叉编译工具链
下载所需的源代码包
建立工作目录
建立环境变量
编译、安装Binutils
获取内核头文件
编译gcc的辅助编译器
编译生成glibc库
编译生成完整的gcc
由于在问答中的篇幅,我不能细述具体的步骤,兴趣的同学请自行阅读开源共创协议的《Linux from scratch》,网址是:linuxfromscratch dot org
。
方法2:用Crosstool工具构建交叉工具链(推荐)
Crosstool是一组脚本工具集,可构建和测试不同版本的gcc和glibc,用于那些支持glibc的体系结构。它也是一个开源项目,下载地址是kegel dot com/crosstool。用Crosstool构建交叉工具链要比上述的分步编译容易得多,并且也方便许多,对于仅仅为了工作需要构建交叉编译工具链的你,建议使用此方法。
运行which makeinfo,如果不能找见该命令,在解压texinfo-4.11.tar.bz2,进入texinfo-4.11目录,执行./configure&&make&&make install完成makeinfo工具的安装
准备文件:
下载所需资源文件linux-2.4.20.tar.gz、binutils-2.19.tar.bz2、gcc-3.3.6.tar.gz、glibc- 2.3.2.tar.gz、glibc-linuxthreads-2.3.2.tar.gz和gdb-6.5.tar.bz2。然后将这些工具包文件放在新建的$HOME/downloads目录下,最后在$HOME/目录下解压crosstool-0.43.tar.gz,命
令如下:
#cd$HOME/
#tar–xvzfcrosstool-0.43.tar.gz
建立脚本文件
接着需要建立自己的编译脚本,起名为arm.sh,为了简化编写arm.sh,寻找一个最接近的脚本文件demo-arm.sh作为模板,然后将该脚本的内容复制到arm.sh,修改arm.sh脚本,具体操作如下:
# cd crosstool-0.43
# cp demo-arm.sh arm.sh
# vi arm.sh
修改后的arm.sh脚本内容如下:
#!/bin/sh
set-ex
TARBALLS_DIR=$HOME/downloads#定义工具链源码所存放位置。
RESULT_TOP=$HOME/arm-bin#定义工具链的安装目录
exportTARBALLS_DIRRESULT_TOP
GCC_LANGUAGES="c,c++"#定义支持C,C++语言
exportGCC_LANGUAGES
#创建/opt/crosstool目录
mkdir-p$RESULT_TOP
#编译工具链,该过程需要数小时完成。
eval'catarm.datgcc-3.3.6-glibc-2.3.2.dat'shall.sh--notest
echoDone.
建立配置文件
在arm.sh脚本文件中需要注意arm-xscale.dat和gcc-3.3.6-glibc-2.3.2.dat两个文件,这两个文件是作为Crosstool的编译的配置文件。其中arm.dat文件内容如下,主要用于定义配置文件、定义生成编译工具链的名称以及定义编译选项等。
KERNELCONFIG='pwd'/arm.config#内核的配置
TARGET=arm-linux#编译生成的工具链名称
TARGET_CFLAGS="-O"#编译选项
gcc-3.3.6-glibc-2.3.2.dat文件内容如下,该文件主要定义编译过程中所需要的库以及它定义的版本,如果在编译过程中发现有些库不存在时,Crosstool会自动在相关网站上下载,该工具在这点上相对比较智能,也非常有用。
BINUTILS_DIR=binutils-2.19
GCC_DIR=gcc-3.3.6
GLIBC_DIR=glibc-2.3.2
LINUX_DIR=linux-2.6.10-8(根据实际情况填写)
GDB_DIR=gdb-6.5
执行脚本
将Crosstool的脚本文件和配置文件准备好之后,开始执行arm.sh脚本来编译交叉编译工具。具体执行命令如下:
#cdcrosstool-0.43
#./arm.sh
经过数小时的漫长编译之后,会在/opt/crosstool目录下生成新的交叉编译工具,其中包括以下内容:
arm-linux-addr2linearm-linux-g++arm-linux-ldarm-linux-size
arm-linux-ararm-linux-gccarm-linux-nmarm-linux-strings
arm-linux-asarm-linux-gcc-3.3.6arm-linux-objarm-linux-strip
arm-linux-c++arm-linux-gccbugarm-linux-objmpfix-embedded-paths
arm-linux-c++filtarm-linux-gcovarm-linux-ranlib
arm-linux-cpparm-linux-gprofarm-linux-readelf
添加环境变量
然后将生成的编译工具链路径添加到环境变量PATH上去,添加的方法是在系统/etc/ bashrc文件的最后添加下面一行,在bashrc文件中添加环境变量
export PATH=/home/jiabing/gcc-3.3.6-glibc-2.3.2/arm-linux-bin/bin:$PATH
至此,arm-linux下的交叉编译工具链已经完成,现在就可以使用arm-linux-gcc来生成试验箱上的程序了!
9. 如何在ubuntu中搭建交叉编译环境toolchain
1.安装交叉编译环境 sudo apt-get install gcc g++ libcc1 libg++ make gdb
2.安装交叉编译器 f
tp:
//ftp.
arm.linux.org.uk/pub/armlinux/toolchain/ 下载 cross -3.2.tar.bz2或者懒得去找干脆
wget f
tp://ftp.
arm.linux.org.uk/pub/armlinux/toolchain/ cross -3.2.tar.bz2
解压
sudo tar jxvf /home/zhaifang/cross -3.2.tar.bz2
sudo mv /home/zhaifang/usr/local/arm /usr/local
3.交叉编译器加入路径 sudo vi /etc/bash.bashrc后面加入
if [ -d /usr/local/arm ] ; then
PATH=/usr/local/arm/bin:'${PATH}'
fi
4.使环境生效 #source /etc/profile
5.检查 echo $PATH 出现/usr/local/arm/bin说明成功了
6.测试 arm-linux-gcc -v