❶ QT交叉编译环境
将安装全套的Qt开发环境,可以在PC端进行qt开发。
Ubuntu14.04的Qt版本为5.2.1,16.04的Qt版本为5.5.1,高版本Qt库可以向下兼容运行低版本工具链编译的程序,因此这里选用5.2.1版本作为编译工具链。
进入Qt工程目录中,目录下会有个<工程名>.pro文件,如果目录中存在<工程名>.pro.user文件,是之前qtcreator生成的配置文件,请先删除。然后运行:
即可完成编译,编译好的程序可以放到树莓派上直接运行。
另外,工程的配置可以通过修改 工程名.pro文件,例如添加链接库,只需要在文件中添加如下选项:
添加c99支持:QMAKE_CFLAGS += -std=c99
❷ 如何建立linux交叉编译环境
从网上下载arm-linux-gcc 4.4.3的源码
2
进入Linux的终端,将当前目录设为arm-linux-gcc的下载目录,输入tar -xzf arm-linux-gcc-4.4.3.tar.gz,将文件解压,解压后会有一个opt的文件夹。
arm-linux-gcc交叉编译环境的安装
3
在/usr/local/下建立一个名为arm的文件夹,在终端中输入命令:cd /usr/local/,回车,然后再输入命令:mkdir arm,建立arm目录,并修改该文件夹的属性为rwx,输入命令:chmod 777 arm
arm-linux-gcc交叉编译环境的安装
4
将之前解压得到的opt文件压下的源码,复制到上一步中创建的arm文件夹下,在终端中输入命令:sudo cp -r /opt/FriendlyARM/toolschain/4.4.3 /usr/local/arm
arm-linux-gcc交叉编译环境的安装
5
到这里已经基本安装好了,到为了避免每次使用arm-linux-gcc时都要输入它所在的完整路径,所以这里我们要修改一下环境变量$PATH。在终端中输入:sudo gedit /etc/profile,打开profile文件,在最后一行加上“export PATH=$PATH:/usr/local/arm/4.4.3/bin”然后保存文件。
arm-linux-gcc交叉编译环境的安装
arm-linux-gcc交叉编译环境的安装
6
立即使新的环境变量生效,输入:source /etc/profile。再输入:echo $PATH查看环境变量,如图。如果不成功,则直接重新启动系统,再查看。因为之前我已经安装过了,为了演示,所以图中会有两个/usr/local/arm/4.4.3/bin。
arm-linux-gcc交叉编译环境的安装
arm-linux-gcc交叉编译环境的安装
7
最后检查是否安装完成,输入:arm-linux-gcc -v查看版本信息,如果出现以下信息,则说明安装成功。
arm-linux-gcc交叉编译环境的安装
❸ ubuntu12.04编译交叉编译已经安装,为什么还不能编译
1、解压交叉编译开发工具包
sudo
tar
xvzf
arm-linux-gcc-4.4.3.tar.gz
-C
/
解压工具链到根目录,这里的解压目录可以任意指定。系统中会增加目录/opt/FriendlyARM/toolschain/4.4.3/
2、修改环境变量,把交叉编译器的路径加入到PATH
采用修改/etc/bash.bashrc文件的方法(还可有别的方法)
①用vim打开文件:
#sudo
vim
/etc/bash.bashrc
②在最后面新建一行加上:
export
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
3、立即使新的环境变量生效,不用重启电脑:
#source
/etc/bash.bashrc
{
这是上面修改环境变量的另一种方法
①
$sudo
-i
输入自己的密码,这是进入超级用户权限
②
cd
/root/
vim
.bashrc
③
在最后加上
export
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
(路径)(注意等号那边不要有空格)
④
source
~/.bashrc
(立即生效)
(好像只能本终端,注销一下就永远都有这个环境变量的)
}
4、检查是否将路径加入到PATH
#echo
$PATH
若显示的内容中有刚刚添加的交叉编译器所在目录,则证明编译环境安装成功。
5、测试是否安装成功
指令:#arm-linux-gcc
-v
上面的指令会显示arm-linux-gcc信息和版本,显示的内容信息:
此时,证明安装成功。
6、编译实验
写个HelloWorld程序,测试交叉工具连
写下下面的HelloWorld程序,保存为hello.c
#include
int
main()
{
printf(“HelloWorld!\n”);
return0;
}
执行下面的指令:
#arm-linux-gcc-o
hello
hello.c
要是不报错说明安装成功。
❹ 如何安装arm-liunx交叉编译环境
sh ./arm-elf-tools-20040427.sh安装
----------------------------------------------
一、准备工作
首先需要一台运行Linux操作系统的PC以完成我们的编译工作。
其次要准备如下一些源文件。
1、源文件准备
binutils-2.14.tar.gz
ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz
gcc-core-2.95.3.tar.gz
ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz
gcc-g++2.95.3.tar.gz
ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-g++-2.95.3.tar.gz
glibc-2.2.4.tar.gz
ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.4.tar.gz
glibc-linuxthreads-2.2.4.tar.gz
ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gz
linux-2.4.21.tar.gz
ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz
patch-2.4.21-rmk1.gz # linux kernel patch for arm
ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz
binutils-2.14.tar.gz这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。
gcc-core-2.95.3.tar.gz这个压缩包是GCC的主体部分,GCC是GNU Compiler Collection的简称,顾名思义,它能够编译很多种高级语言,例如C、C++,Java等,而这个压缩包中含有C编译器,及公共部分,而对其他语言的支持,采用另外的压缩包单独发布。
gcc-g++2.95.3.tar.gz,这个压缩包就是为使GCC能够编译C++程序而单独发布的。
glibc-2.2.4.tar.gz,libc是很多用户层应用都要用到的库,kernel和bootloader不需要这个库的支持,这个库主体部分封装在这个压缩包内。
glibc-linuxthreads-2.2.4.tar.gz,这是Libc用于支持Posix线程而单独发布的一个压缩包。
linux-2.4.21.tar.gz,这个压缩包就是Linux的内核。
patch-2.4.21-rmk1.gz,这个压缩包是用来给Linux内核打补丁,以使其可以支持ARM的硬件平台。
2、工作目录搭建
我们创建如下的目录树结构
mkdir arm
mkdir tool-chain
mkdir build-dir
mkdir src-dir
mkdir setup-dir
mkdir kernel
arm这个目录是我们的最顶层工作目录,我们所有的编译工作都在这里完成。
tool-chain这个目录是我们交叉编译工具的安装位置,它下面的bin子目录存放我们创建好的编译器,汇编器,连接器,以及编译好的C库也会安装到这个目录之下。
setup-dir这个目录用来存放我们下载的压缩包。
src-dir这个目录用于存放binutils,gcc,glibc解压之后的源文件。
kernel这个目录用来存放内核文件,对内核的配置、编译工作将在这个目录中完成。
build-dir用来编译src-dir中的源文件,具体就是binutils,gcc,glibc的编译工作将在这个目录下完成。这种源文件目录和编译目录分离的编译方式是GNU所推荐的。
cd ./src-dir
tar –xvzf ../setup-dir/ binutils-2.14.tar.gz
tar –xvzf ../setup-dir/ gcc-core-2.95.3.tar.gz
tar –xvzf ../setup-dir/ glibc-2.2.4.tar.gz
tar –xvzf ../setup-dir/ glibc-linuxthreads-2.2.4.tar.gz –directory=./glibc-2.2.4
这样我们在src-dir目录下就形成了3个源文件目录binutils-2.14,gcc-core-2.95,3,glibc-2.2.4,其中分别存放着binutils tools,gcc,glibc的源代码。接下来我们到build-dir中创建3个与这三个源文件目录对应的编译目录。
cd ../build-dir
mkdir ../build-dir/build-binutils
mkdir ../build-dir/build-gcc
mkdir ../build-dir/build-glibc
我们将在这三个目录中完成对binutils tools, gcc, glibc的配置和编译工作。下面还要把内核文件解压到kernel目录下,并打补丁。
cd ../kernel
tar –xvzf ../setup-dir/ linux-2.4.21.tar.gz
cd ./linux-2.4.21
patch –p1 < ../../setup-dir/ patch-2.4.21-rmk1
二、开始创建
1、 确定几个系统变量
cd ../../
export TARGET=arm-linux
export PREFIX=../arm/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export KERNEL_SOURCE_LOCATION=../arm/kernel/linux-2.4.21
export PATH=$PREFIX/bin:$PATH
几个系统变量经常要用到,TARGET定义了目标机,PREFIX是工具链的安装目录,KERNEL_SOURCE_LOCATION是内核文件位置。
TARGET这个变量对于ARM体系的目标机来说取值为arm-linux,对于其他体系结构的机器如ppc,mips的取值的详细清单可以参见glibc目录下的INSTALL文档.
2、 创建binutils
运行如下命令来创建binutils
cd ./build-dir/build-binutils
configure ../../src-dir/binutils-2.14/configure –target=$TARGET –prefix=$PREFIX
make
make install
这时$PREFIX/bin下创建了一些文件,包括arm-linux-ld,arm-linux-as等。
3、 编译内核
cd ../../kernel/linux-2.4.21
改Makefile文件使
ARCH = arm
CROSS_COMPILE=arm-linux-
make menuconfig
在System Types中选择正确的硬件类型
make dep
之后执行如下操作
mkdir $TARGET_PREFIX/include
cp dR $KERNEL_SOURCE_LOCATION/include/arm-asm \
RGET_PREFIX/include/asm
cp dR $KERNEL_SOURCE_LOCATION/include/linux \
RGET_PREFIX/include/linux
4、 创建boot-trap gcc,这个GCC没有glibc库的支持,所以只能用于编译内核,bootloader等,后面创建C库也要用到这个编译器,所以创建它主要是为创建C库做准备,如果只想编译内核和bootloader那么,就可以到此结束。
cd ../../build-dir/build-gcc
../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX \
--with-headers=$ERNEL_SOURCE_LOCATION/include –enable-language=c \
--disable-threads
然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在
TARGET_LIBGCC2_CFLAGS中添加如下两个定义
-Dinhibit-libc –D__gthr_posix_h
make
make install
这时$PREFIX/bin下创建了一些文件,主要创建了arm-linux-gcc。
5、 创建gblic
cd ../build-glibc
export CC=arm-linux-gcc
../../src-dir/glibc-2.2.4/configure –host=$TARGET –prefix=$TARGET_PREFIX \
--enable-add-ons
make
make install
将glibc库安装完之后,我们要到$TARGET_PREFIX/lib这个目录下修改libc.so文件,将其中
GROUP(/lib/libc.so.6 /lib/libc_noshared.a)
这个命令脚本中的/lib 的绝对路径去掉, 也就是改为如下的形式
GROUP(libc.so.6 libc_noshared.a)
这样下一步创建完整的编译器时,才不至于导致错误.
6、 创建功能健全的GCC,并创建G++
在成功创建了libc之后,我们就可以创建功能丰富的GCC编译器了,并且可以创建支持编译C++程序的G++。
cd ../../src-dir
tar –xvzf ../setup-dir/ gcc-g++2.95.3.tar.gz
cd ../build-dir/build-gcc
export CC=gcc
../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX \
–enable-language=c,c++
然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在
TARGET_LIBGCC2_CFLAGS中去除如下两个定义
-Dinhibit-libc –D__gthr_posix_h
make
make install
7,至此我们成功的创建了ARM Linux的交叉编译工具。
------------------------------------------------------
可以去www.arm16.com看看
❺ 如何在Ubuntu下建立交叉编译环境
1.安装交叉编译环境 sudo apt-get install gcc g++ libcc1 libg++ make gdb
2.安装交叉编译器 ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/ 下载 cross -3.2.tar.bz2或者懒得去找干脆
wget ftp://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
❻ 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
。
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来生成试验箱上的程序了!
❼ 如何搭建交叉编译环境
交叉编译环境就是在Windows下的东西拿到Linux下编译运行吧,我个人是在Linux启动了samba服务器,然后将文件夹映射到Windows下,在Windows下使用vc 6.0编程序然后到Linux下编译的。不知道能不能对你有些帮助。
下载的rpm包,可以使用rpm -ivh 包路径进行安装
❽ 如何在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