ubuntu交叉编译用法
(7条消息)ubuntu16.04 安装交叉编译工具aarch64
(7条消息)ubuntu16.04 安装交叉编译工具aarch64前言最近需要把人脸识别代码放到RK3399Pro的嵌入式板子上,所以编写好的c++ 代码要放到板子上编译,或者在ubuntu系统上使用交叉编译工具,编译好可执行文件在放到板子里运行。
为了在能在ubuntu系统上能交叉编译,安装aarch64-linux-gnu-gcc/g++交叉编译工具链。
介绍The GNU Compiler Collection - cross compiler for ARM64 target. aarch64-linux-gnu-gcc/g++ 是一个交叉编译工具链,可以在其他架构的系统中,编译安装64 位arm 架构的程序。
常用在嵌入式代码的移植中。
aarch64-linux-gnu-gcc/g++ 是由非盈利组织Linaro 基于 GCC/G++ 推出的 ARM 交叉编译工具。
可用于交叉编译ARMv8 64 位目标中的裸机程序、u-boot、Linux kernel、filesystem 和 App 应用程序。
aarch64-linux-gnu-gcc/g++ 交叉编译器必须安装在 64 位主机上,才能编译目标代码。
安装# 查看可以安装的版本apt-cache search aarch64# 选择可以安装的版本进行安装# 此处选择gcc-5-aarch64-linux-gnu以及g++-5-aarch64-linux-gnu进行安装sudo apt-get install gcc-5-aarch64-linux-gnusudo apt-get install gcc-5-aarch64-linux-gnu# 安装依赖sudo apt --fix-broken install# 安装一个没有版本号的gcc和g++sudo apt-get install gcc-aarch64-linux-gnusudo apt-get install gcc-aarch64-linux-gnu# 查看版本aarch64-linux-gnu-g++ -vaarch64-linux-gnu-gcc -v测试c++文件交叉编译1.test.cpp文件/** test.cpp* for cplusplus* test aarch64-linux-gnu-g++*/# include<iostream>int main(int argc,char **argv){std::cout << "hello world!" <<std::endl;return 0;}2.交叉编译# 生成可执行文件test命令cd test # 切换到test 目录下aarch64-linux-gnu-g++ test_arm.cpp -o test # 将生成的可执行文件放到嵌入式板子上运行./test # 若显示hello world!表示成功。
ubuntu10.04全过程创建交叉编译环境
ubuntu10.04下建立交叉编译工具链(支持软浮点)全过程参考了网上的不少的资料,花了五个小时终于完成了,记录下全过程供大家分享。
用到的源码包如下,建议新手全部放在/home/usr/downloads/ 目录下。
以下操作在用户权限下进行。
=======================================================================arm-linux-gcc-3.4.1.tar.gzglibc-2.3.3.tar.gzlinux-2.6.8.tar.gzcrosstool-0.43.tar.gzbinutils-2.15.tar.gzglibc-linuxthreads-2.3.3.tar.gzbinutils-2.18.tar.gz --安装用编译一次至少要花半个小时,如果因为依赖软件没有安装中途会报错退出,只有从头再来,那样很浪费时间的。
sudo apt-get install bison flex build-essential patch libncurses5-dev由于ubuntu10.04自带的ld ,as版本太高的原因,需要安装binutils的2.18版本,然后替换系统中的2.20版本。
方法如下:$cd downloads$tar xzvf binutils-2.18.tar.gz$cd binutils-2.18$./configure --prefix=/tmp/binutils --disable-nls (-prefix后面的是生成可执行文件存放的位置可以自己定义)$make all$make install编译成功后在/tmp/binutils/bin/中就生成了ld和as程序的可执行文件重新链接/usr/bin/ld 和/usr/bin/as文件$sudo rm /usr/bin/ld /usr/bin/as //删除2.20的ld,as$sudo ln –s /tmp/binutils/bin/ld /usr/bin/$sudo ln –s /tmp/binutils/bin/as /usr/bin/然后可运行ld –v 和as –v 查看版本是否为2.18。
Ubuntu16.04下的2009q3交叉编译工具链的搭建
Ubuntu16.04下的2009q3交叉编译⼯具链的搭建
环境搭建:
1.下载arm-2009q3.tar.bz2源码。
密码: rbui
2.将arm-2009q3.tar.bz2拷贝到/usr/local/arm(没有该⽬录就新建⼀个)⽬录下,执⾏命令tar jxvf arm-2009q3.tar.bz2 进⾏解压。
3.为了能在别的路径下运⾏需要修改环境变量
执⾏命令vim ~/.bashrc (若提⽰权限不够,在命令前加上sudo即可) 在⽂件末尾加上export PATH=/usr/local/arm/arm-
2009q3/bin:$PATH(注意路进正确性,如果此路径运⾏后不⾏的话可以尝试export PATH=/usr/arm/arm-2009q3/bin:$PATH)
执⾏命令source ~/.bashrc
到此路径已修改完成
4.安装32位库
因为ia32-libs数据库的问题需安装32位库 依次执⾏下列命令即可
sudo dpkg --add-architecture i386
sudo apt -get update
sudo apt-get dist-upgrade
到此Ubuntu16下的2009q3交叉编译⼯具链的搭建已完成,执⾏命令arm-none-linux-gnueabi-gcc -v 检查⼯具的链是否搭建成功。
By Sw Young。
ubuntu下搭建MIPS交叉编译环境
ubuntu下搭建MIPS交叉编译环境 由于要在本地编译程序,在嵌⼊式系统上运⾏,因此需要在本地装编译器,⽬前主要需要mipsel-linux-gcc。
之前⼀直以为可以⽤apt-get install找到,结果找了好久找不到,发现还是得⾃⼰编。
主要是参考上⾯的那个链接,然后这对⾃⼰需求改了改配置。
1. 环境系统:Ubuntu 16.04软件: buildroot该软件可以编译⽤于 mips, arm等等的C编译器。
2. 下载tar -jxvfcd buildroot3. 配置buildroot (重要)make cleanmake menuconfig会出现选择菜单,如下图:选择第⼀项“Target Architecture”, 改成 MIPS (little endian)另外,选择“Toolchain”, 将"kernel headers"改成⾃⼰主机上的Linux版本(及运⾏改编译器的主机)可以在主机上通过 uname -r 或者 cat /proc/version查看。
原⽣的是只有gcc部分,没有g++部分,需要对编译C++程序,则在菜单⾥选择 Enable c++选项(按 y 选取)。
⽤于编译python的配置选项我主要⽤这个来编译python放在嵌⼊式设备系统上⽤,最开始就按照上⾯的选项,编译⼀般的程序没问题,编译python会出现:unknow type name 'wchar_t' 错误,这个需要在这⾥的⼯具⾥选⼏个选项;a1. 在配置⾥选择对wchar的⽀持;a2. 退出Target options,进⼊Target packages,在Target packages⾥再添加⼏个选项(这⾥我没看不配置这个会出什么问题,这个⾥⾯到底做什么的,我直接按照进⼊Interpreter lanaguages and scripting 选项,选择python选项,然后吧core python modules⾥的都选了吧~(编译⼀次太费时了,缺个什么⼜得重新编译这个⼯具链)配置完了后,保存,并退出。
Ubuntu18.04安装arm-linux-gcc交叉编译器的两种方法(附下载地址)
Ubuntu18.04安装arm-linux-gcc交叉编译器的两种⽅法(附下载地址)⽅法⼀: 我们都知道Ubuntu有⼀个专门⽤来安装软件的⼯具apt,我们可以⽤它来全⾃动安装arm-linux-gcc。
此⽅法安装的是最新版的,但是此⽅法需要FQ,否则99%会失败,这就是为什么⽹上⼤多都⽤压缩包安装的原因: ⾸先Ctrl+Alt+T弹出终端,使⽤如下命令进⾏arm-linux-gcc的安装:sudo apt-get install gcc-arm-linux-gnueabihf 使⽤如下命令进⾏arm-linux-g++的安装:sudo apt-get install g++-arm-linux-gnueabihf 如果要卸载时使⽤如下命令进⾏移除,arm-linux-gcc的卸载:sudo apt-get remove gcc-arm-linux-gnueabihf arm-linux-g++的卸载:sudo apt-get remove g++-arm-linux-gnueabihfsudo tar -xjvf /tmp/arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 3.解压完成后,再在(/usr/local)中创建⼀个新⽬录arm,即在Terminal中输⼊以下命令:sudo mkdir /usr/local/arm 4.创建arm⽬录成功后,还需要给它解放全部权限,即在Terminal中输⼊以下命令:sudo chmod 777 /usr/local/arm 5.在解压出来的⽬录中找到并把整个arm-linux-gcc-3.4.5-glibc-2.3.6⽬录复制到刚刚建好的arm⽬录中,命令如下:sudo cp -r gcc-3.4.5-glibc-2.3.6 /usr/local/arm 6.打开(/etc/profile)配置环境变量和库变量,⽬的是以后可以在任何位置使⽤该交叉编译器,命令如下:sudo vi /etc/profile 7.⽤vi或者vim打开后,在⽂件最后添加两⾏,并输⼊以下代码:第⼀⾏是添加执⾏程序的环境变量,第⼆⾏是库⽂件的路径export PATH=$PATH:/usr/local/arm/gcc-3.4.5-glibc-2.3.6/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-3.4.5-glibc-2.3.6/lib 8.使⽤source命令重新加载⽣效该配置⽂件source /etc/profile 9.检验是否安装成功,在 Terminal 输⼊以下命令输出版本信息:arm-linux-gcc -v 10.若有以下报错参考解决办法: 报错:bash: /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc-4.2.2: No such file or directory 解决sudo apt-get install libc6-i386 该库中包括ia32-libs, lib32z1, lib32ncurses5等等依赖。
Ubuntu 10.04运用crosstool-ng-1.9.0建立arm-linux交叉工具链
Ubuntu 10.04下运用crosstool-ng-1.9.0建立arm-linux交叉工具链构建一个交叉工具链供嵌入式系统开发使用是一个令人恐惧的景象,需要钢铁般的意志,需要几天(如果不是几个星期)的功夫,需要具备许多的 Unix 和GNU 知识……”正式基于这一点,我们选择开源工具crosstool-ng,来制作自己的交叉编译工具链。
Crosstool现在也有好几个版本,在这里我选择crosstool-ng-1.9.0这个工具包。
我所选的主机系统是Ubuntu10.04。
在制作交叉编译工具之前要安装各种各样的编译工具,因为Ubuntu系统的方便性,我们可以通过具体的命令在线安装所需的软件。
下面将是具体的制作交叉编译的过程;一、安装所需的工具包$ sudo apt-get install g++ libncurses5-dev bison flex texinfo automake libtool patch gcj cvs cvsd gawk二、下载交叉编译工具所用的文件,在制作交叉编译的过程中,需要在线下载这个编译工具包,考虑到网速的问题和编译的时间问题,提前将这些包下载下来,放在指定的目录下,可以大大节省很多的编译时间,考虑到各种包的下载问题,这个百度文库又不能上传软件包,我就将所有的下载路径附在文章后面,同仁们可以去具体的地方下载!三、安装crosstool-ng-1.9.0.tar.bz2的工具。
安装所需的crosstool-ng-1.9.0,也可在这个地址下/old_news下载crosstool-ng的工具包。
下面是详细的安装步骤:#cd //回到家目录#mkdir crosstool //建立crosstool目录#cp ~/下载/tar/crosstool-ng-1.9.0.tar.bz2 ./crosstool //拷贝crosstool源码包到crosstool目录下#cd crosstool //进入crosstool目录#tar jxvf crosstool-ng-1.9.0.tar.bz2 //解压源码包考虑到后续要用的各种目录,我这里先建立好所需的目录#mkdir crosstool-build crosstool-install src //解压完后建立安装目录编译目录和源码包目录,这几个目录和crosstool-ng-1.9.0目录并列,如下图所示:#cd crosstool-ng-1.9.0 //进入crosstool目录#./configure --prefix=~/crosstool/crosstool-install# make //编译# sudo make install //安装#cd crosstool-build/ //进入crosstool-build目录#cp ../crosstool-ng-1.9.0/samples/arm-unknown-linux-gnueabi/* ./ //拷贝交叉工具链到crosstool-build目录下#mv crosstool.config .config //修改文件名#../crosstool-install/bin/ct-ng menuconfig此刻会出现一个图形配置界面,在此配置界面下,可以按照自己开发板的实际情况来进行配置:1、设定源码包路径和交叉编译器的安装路径。
Ubuntu交叉编译libusb库
Ubuntu交叉编译libusb库参考博客:•/tycool/article/details/18842367软件包:libusb源码:编译环境:主机:ubuntu 16.04ARM交叉编译工具链: arm-linux-gnueabihf-步骤如下:1、下载libusb-1.0.9软件包和libusb-compat-0.1.4软件包(我实际没有用到这个库)2、解压tar -jxvf libusb-1.0.9.tar.bz23、编译与安装$ cd libusb-1.0.9/ #进入libusb-1.0.9目录$ mkdir install #创建软件安装目录$ ./configure --build=i686-linux --host=arm-linux --prefix=`pwd`/install CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ #配置编译环境$ make # 开始编译$ make install #安装•1•2•3•4•5说明一下:–build=i686-linux表示该软件在x86平台上被编译–host=arm-linux表示该软件编译完成后在arm平台上运行–prefix后面为软件安装目录4、检验编译结果是否就是ARM平台可用的库:~/code/libusb-1.0.9/install/lib$ file libusb-1.0.so.0.1.0libusb-1.0.so.0.1.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=7cfde4289fc5e33bbb72707e4edc35b9b8f8b163, not stripped#查看.so库中可用的库函数:lambda@lambda:~/code/libusb-1.0.9/install/lib$ nm libusb-1.0.so.0.1.000004824 T libusb_lock_event_waiters00003304 T libusb_open00003404 T libusb_open_device_with_vid_pid...都是libusb函数,没有usb开头的函数•1•2•3•4•5•6•7•8编译libusb-compat-0.1.4软件包与编译libusb-1.0.9软件包的方法类似,但要注意编译libusb-compat-0.1.4(依赖于libusb-1.0.4的编译结果,故configure时需要额外指定其PKG_CONFIG_PATH)./configure --build=i686-linux --host=arm-linux --prefix=`pwd`/install CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++PKG_CONFIG_PATH=/home/lambda/code/libusb-1.0.9/install/lib/pkgconfig•1使用交叉编译后的libusb库1、需要将生成的库复制到开发板上程序才能运行。
gperf交叉编译
gperf交叉编译
gperf是一款使用C++编写的、用于生成完美哈希函数的工具,可以用于对大型关键字集合进行快速查找。
如果你需要在交叉编译环境下使用gperf,需要先了解交叉编译的概念,即在一台主机上编译生成在目标平台上运行的程序。
交叉编译需要进行多项配置,比如指定交叉编译工具链、库的位置和头文件目录等。
这些配置可能因不同的操作系统而有所不同,具体请查阅相关文档。
在这里,我们以Ubuntu为例,介绍如何交叉编译gperf。
首先,需要安装交叉编译工具链,比如arm-linux-gnueabi-gcc。
在Ubuntu上,可以通过以下命令安装:
sudo apt-get install gcc-arm-linux-gnueabi
接着,需要下载gperf的源代码,并解压缩。
假设解压后的目录为gperf-3.1,可以使用以下命令进入该目录:
cd gperf-3.1
然后,需要指定交叉编译工具链,可以使用以下命令:
./configure CC=arm-linux-gnueabi-gcc
configure脚本会进行自动检测,如果你的系统上没有安装交叉编译工具链,configure会报错。
如果检测通过,configure会生成Makefile文件,可以使用以下命令进行编译:
make
最后,可以将生成的gperf二进制文件拷贝到目标平台上进行测试。
如果一切顺利,恭喜你已经完成了gperf的交叉编译!
需要注意的是,交叉编译需要进行多项配置和操作,如果你没有经验建议在学习相关知识后再进行尝试,以免造成不必要的麻烦。
【整理】Ubuntu 16.04[64bit]交叉编译环境搭建过程图解
开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛。
安装步骤1、准备工具安装目录将压缩包arm-Linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是/home/aldrich/arm,如下图,记住这个路径,等会还会用到。
1. .tar.gz 和.tgz2. 解压:tar zxvf FileName.tar.gz3. 压缩:tar zcvf FileName.tar.gz DirName2、安装软件使用tar命令:tar zxvf arm-linux-gcc-4.3.2.tgz将software文件夹下的arm-linux-gcc-4.3.2.tgz解压缩安装到当前目录。
通过下图可以看到解压成功了,并且解压后的文件存放在了1. /home/aldrich/arm/arm-linux-gcc-4.3.2文件夹下,如下图所示,这个存放路径可得记住,如下图3、配置系统环境变量配置环境前先坐下普及:Ubuntu不同目录下profile与bashrc的区别/etc/profile此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。
/etc/bash.bashrc为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
~/.bash_profile每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次,默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
~/.bash_logout当每次退出系统(退出bash shell)时,执行该文件。
ubuntu10.04安装交叉编译器arm-linux-gcc-4.3.2
这次安装交叉编译器没费什么劲。
1.先将arm-linux-gcc-4.3.2.tgz的安装包复制到ubuntu10.04任意目录中。
用直接在root用户下tar -zxvf arm-linux-gcc-4.3.2.tgz解压到当前目录下。
2.安装标准C开发环境,apt-get install build-essential libncurses5-dev3.添加环境变量gedit~/.profile。
在这个文件最后添加上自己的环境变量:export PATH=$PATH:/home/usr/local/arm/4.3.2/bin4.然后在终端执行source~/.profile ,即可立即生效5.执行arm-linux-gcc-v查看编译器版本Using built-in specs.Target:arm-none-linux-gnueabiConfigured with:/scratch/julian/lite-respin/linux/src/gcc-4.3/configure--build=i686-pc-linux-gnu --host=i686-pc-linux-gnu--target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap--disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld--enable-languages=c,c++ --enable-shared --enable-symvers=gnu--enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2008q3-72'--with-bugurl=https:--with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc--with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/libc--with-gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr--with-mpfr=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp--enable-poison-system-directories--with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin--with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/binThread model:posixgcc version4.3.2 (Sourcery G++ Lite 2008q3-72)表示安装成功。
freeglut 交叉编译
freeglut 交叉编译
Freeglut是一个用于OpenGL编程的开源工具库,可以帮助开发者更加方便地进行OpenGL开发。
在进行嵌入式或者其他平台的开发时,需要进行交叉编译,以满足特定平台的需求。
下面是基于Ubuntu下的交叉编译Freeglut的步骤:
1. 首先需要安装交叉编译工具链,使用命令sudo apt-get install gcc-arm-linux-gnueabi即可安装。
2. 下载Freeglut源代码,解压后进入源代码目录。
3. 设置交叉编译的环境变量,使用命令export
CC=arm-linux-gnueabi-gcc,export CXX=arm-linux-gnueabi-g++,export AR=arm-linux-gnueabi-ar。
4. 进行configure操作,使用命令./configure
--host=arm-linux-gnueabi。
5. 执行make进行编译,使用命令make。
6. 执行make install进行安装,使用命令make install。
7. 执行ldconfig更新共享库缓存,使用命令sudo ldconfig。
以上步骤完成后,就可以在交叉编译的平台上使用Freeglut了。
需要注意的是,在交叉编译时需要根据具体平台的需求进行相关设置,例如修改configure的参数等。
- 1 -。
Ubuntu下arm交叉编译环境的创建及基于s3c2410的linux2.6.22移植
cp –r asm- ${TARGET_PREFIX}/include
$root@host:/home/arm/kernel/linux-2.6.22/include# cp –r linux ${TARGET_PREFIX}/include
GCC是C编译器,用来将C代码编译成汇编代码;
Glibc就是gcc编译时需要的库了,glibc-ports是提供glibc对ARM的支持;
Linux-2.6.22.tar.bz2是内核源代码包。
需要注意的是gcc和glibc以及linux内核版本需要保持对应。如果用比较老的编译器去编译新的内核,或者用新的编译器编译老版本的内核,会出现一些莫名其妙的错误。另外补丁包也是必备的,否则编译过程中也会出错。刚开始我就深受其害。
$root@host:/home/arm# TARGET=arm-linux
$root@host:/home/arm# PREFIX=${PRJROOT}/tools
$root@host:/home/arm# TARGET_PREFIX=${PREFIX}/${TARGET}
$root@host:/home/arm# PATH=${PREFIX}/bin:${PATH}
经历近2周的时间,查阅大量的参考资料和贴子,终于成功将linux2.6.22移植到ARM2410上。中间走了不少弯路,不过走弯路也是一种收获,因为可以碰到和解决许多问题,增长知识。因为linux版本问题以及开发平台的不同,网上的很多文章并不完全适合自己的板子,需要自己摸索和修改。写这点东西算是对前一阶段工作的总结,以免将来忘记。
Ubuntu下搭建MIPS交叉编译环境(zz)
Ubuntu下搭建MIPS交叉编译环境MIPS是一个RISC的处理器体系结构,与之类似的还有x86,arm等,今天我们介绍如何在Ubuntu下搭建MIPS交叉编译环境:1.下载:在/downloads/snapshots/buildroot-snapshot .tar.bz2下载buildroot:tar -jxvf buildroot-snapshot.tar.bz2cd buildroot2.配置buildroot:make cleanmake menuconfig会出现和编译Linux类似的菜单选择界面,如下图:选择第一项“Target Architecture”,改成MIPS(little endian),如下图:另外,选择“Toolchain”,务必将“Kernel Headers”的Linux版本改成你自己主机的Linux版本(因为我们编译出的MIPS交叉工具是需要在我们的主机上运行的),如下图,我的主机是Ubuntu 11.04的,Linux 版本是2.6.38-8:3.编译:注意:1.编译过程中必须联网,因为会下载一些压缩包存放在buildroot/dl文件夹下,比如binutils、gcc等!如下图:2.必须事先安装好bison、flex、texinfo、ncurses等,比如我第一次编译,出现如下错误,因为我没有安装texinfo:sudo apt-get install texinfo就可以了:之后就是漫长的等待了,差不多1个小时。
4.编译完成后,在buildroot文件夹下多了一个output文件夹,其中就是编译好的文件:cd buildroot/output/host/usr/bin我们发现了mips的交叉编译工具已经生成啦~~:5.另外,在buildroot/output/target文件夹下,我们发现这就是我们之前选择的Linux 2.6.36-8版的busybox!如下图:我们用file命令查看其中的某个可执行文件,如下:我们看到,生成的文件确实是MIPS平台的,在我的x86下是无法运行的。
Qt移植:Ubuntu16.04交叉编译qt5.9.6详细教程
Qt移植:Ubuntu16.04交叉编译qt5.9.6详细教程博主是嵌⼊式⼩萌新,项⽬需要移植qt到arm开发板上,历经千⾟万苦解决了各种问题,最后终于成功了,所以整理了开发笔记给更多的⼩伙伴参考。
1.准备阶段④安装虚拟机VMware® Workstation 14 Pro和Ubuntu16.04.5 LTS,博主的虚拟机版本如下图:⑤将⽂件分别存放在相应⽂件夹下并解压:****.tar.gz ⽂件的解压命令是:tar -zxvf ****.tar.gz****.tar.xz ⽂件的解压命令是:tar xvJf ****.tar.xz第⼀步的准备⼯作已完成。
2. 安装交叉编译器:交叉编译器解压之后的路径为:/home/admin/Qt_Env/Cross-compiler/①查看当前环境变量命令:echo $PATH②在/etc/profile中添加新的环境变量:执⾏命令:gedit /etc/profile在⽂件末尾添加:export PATH=$PATH:/home/admin/Qt_Env/Cross-compiler/aarch64-linux-gnu/bin执⾏命令:source /etc/profile③再次执⾏echo $PATH可以看到环境变量已经添加上了。
④验证编译器是否安装成功执⾏命令:aarch64-linux-gnu-g++ -v终端显⽰编译器信息如下:编译器安装成功。
注意:在/etc/profile中改变的环境变量是临时的,重启虚拟机或重启终端会导致环境变量修改不⽣效,所以在编译qt之前⼀定要确定交叉编译器安装成功,如果执⾏④打印的是gcc的版本信息,那么可能是编译器3.交叉编译qt5.9.6①配置qt的configure在⽬录/home/Qt_Env/Qt_opensource下创建 qt_compiler_conf.sh⽂件,⽂件是configure的配置项,关于配置项的说明资料很多,在此不在赘述。
交叉编译环境_ubuntu
折腾了一下午,终于在Debian下弄好了交叉编译环境,在网上查了一大堆的资料,大都是乱七八糟的,总是出现这样那样的问题,经过尝试和探索,终于搞定了,现将我构建的过程总结一下,作个记录,UBUNTU下也类似。
本文地址:/s/blog_5a155e330100bqjc.html1.安装标准的C开发环境,由于Linux安装默认是不安装的,所以需要先安装一下(如果已经安装好的话,就可以免去这一步了):#sudo apt-get install gcc g++ libgcc1 libg++ make gdb2.下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下,我把它下载到了我的个人文件夹里/home/wrqarm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz23.解压arm-linux-gcc-3.4.1.tar.bz2#tar -jxvf arm-linux-gcc-3.4.1.tar.bz2解压过程需要一段时间,解压后的文件形成了usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下# cd usr/local/#cp -rv arm /usr/local/现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了4. 修改环境变量,把交叉编译器的路径加入到PATH。
(有三种方法,强烈推荐使用方法一)方法一:修改/etc/bash.bashrc文件#vim /etc/bash.bashrc在最后加上:export PATH=$PATH:/usr/local/arm/3.4.1/binexport PATH方法二:修改/etc/profile文件:# vim /etc/profile增加路径设置,在末尾添加如下,保存/etc/profile文件:export PATH=$PATH:/usr/local/arm/3.4.1/bin方法三:#export PATH=$PATH:/usr/local/arm/3.4.1/bin注:(这只能在当前的终端下才是有效的!)5.立即使新的环境变量生效,不用重启电脑:对应方法一:#source /root/.bashrc对应方法二:# source /etc/profile6.检查是否将路径加入到PATH:# echo $PATH显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。
实验一(补充):在ubuntu8.10环境建立交叉编译链
实验一(补充) :在 ubuntu8.10 环境建立交叉编译链什么是交叉编译 在一种计算机环境中运行的编译程序, 能编译出在另外一种环境下运行的代码, 我们就 称这种编译器支持交叉编译。
这个编译过程就叫交叉编译。
简单地说,就是在一个平台上生 成另一个平台上的可执行代码。
这里需要注意的是所谓平台,实际上包含两个概念:体系结 构(Architecture) 、操作系统(Operating System) 。
同一个体系结构可以运行不同的操作系 统; 同样, 同一个操作系统也可以在不同的体系结构上运行。
举例来说, 我们常说的 x86 Linux 平台实际上是 Intel x86 体系结构和 Linux for x86 操作系统的统称;而 x86 WinNT 平台实际 上是 Intel x86 体系结构和 Windows NT for x86 操作系统的简称。
有时是因为目的平台上不允许或不能够安装我们所需要的编译器, 而我们又需要这个编 译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又 是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。
我们常用的计算机 软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如 C 代码)编译 (compile)成计算机可以识别和执行的二进制代码。
比如,我们在 Windows 平台上,可使 用 Visual C++开发环境,编写程序并编译成可执行程序。
这种方式下,我们使用 PC 平台上 的 Windows 工 具 开 发 针 对 Windows 本 身 的 可 执 行 程 序 , 这 种 编 译 过 程 称 为 native compilation,中文可理解为本机编译。
然而,在进行嵌入式系统的开发时,运行程序的目标 平台通常具有有限的存储空间和运算能力,比如常见的 ARM 平台,其一般的静态存储空 间大概是 16 到 32MB,而 CPU 的主频大概在 100MHz 到 500MHz 之间。
在Ubuntu下建立交叉编译环境并编译UBoot和Linux内核
在Ubuntu下建立交叉编译环境并编译UBoot和Linux内核luweixuan一、实验环境:Ubuntu 12.04 32位系统二、准备的软件包:(baremetal compiler toolchain)裸机交叉编译工具链软件,主要用来编译Uboot或者裸机环境下的应用程序。
其实质为:Sourcery CodeBench Lite 2012.09-63软件包。
下载地址:https:///GNUToolchain/package10928/public/arm-none-eabi/arm-2012.09-63-arm-none-eabi.bin(Linaro GCC),是基于开源代码的ARM V7A体系结构(ARM Cortex-A8 & Cortex-A9 processors)的系统开发工具链软件,用来编译Linux系统内核和运行于Linux系统下的应用程序。
下载地址:ftp:///outgoing/SoC_FPGA/ethernet_3.7/gcc-linaro-arm.tar.bz2(compiler toolchain for ARM GNU/Linux)基于ARM GNU/Linux下的交叉编译环境包,主要用来编译Linux系统内核和运行于Linux系统下的应用程序。
其实质为:Sourcery CodeBench Lite 2012.03-57 for ARM GNU/Linux软件包。
此软件包是可选安装的。
下载地址为:https:///GNUToolchain/package10382/public/arm-none-linux-gnu eabi/arm-2012.03-57-arm-none-linux-gnueabi.bin4.linux-socfpga-13.02-bin.tar.gz(socfpaga SD Card image)包含已经编译好的应用于CV5系统的SD卡启动镜像文件的包。
ubuntu10.10下建立交叉编译环境
1 / 51.安装标准的C开发环境,由于Ubuntu9.04Linux安装默认是不安装的,所以需要先安装一下(如果已经安装好的话,就可以免去这一步了):$ sudo apt-get install gcc g++ libgcc1 libg++ make gdb 如果上面这个安装不行,可以试试$ sudo apt-get install build-essential 2.下载arm-linux-gcc- 4.3.2.tgz到任意的目录下,进入这个文件夹$ sudo tar xvzfarm-linux-gcc- 4.3. 2.tgz–C / 注意:C后面有个空格,并且C是大写的,它是英文单词“Change”的第一个字母, 在此是改变目录的意思。
执行该命令,将把arm-linux-gcc安装到/usr/loca/arm/ 4.3.2目录。
3.修改环境变量,把交叉编译器的路径加入到PATH。
方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用)$sudo gedit /etc/bash.bashrc 在最后加上export PATH=$PATH:2 / 5/usr/local/arm/ 4.3.2/bin 方法二:修改/etc/profile文件(此文件属于系统级别的环境变量,设置在里面的东西对所有用户适用):$sudo gedit /etc/profile增加路径设置,在末尾添加如下,保存/etc/profile文件:export PATH=$PATH: /usr/local/arm/ 4.3.2/bin 方法三:修改/etc/environment文件$sudo gedit /etc/environment 原文件应为PATH=/usr/local/sbin:/usr/local/bin: /usr /sbin: /usr/bin: /sbin: /bin:/usr/games“将其改为3 / 5PATH=/usr/local/sbin: /usr/local/bin: /usr/sbin: /usr/bin: /sbin: /bin: /usr/games: /usr/local/arm/ 4.3.2/bin保存退出即可4.立即使新的环境变量生效,不用重启电脑:对应方法一:$ source /root/.bashrc 对应方法二:$ source /etc/profile 方法三立即生效5.检查是否将路径加入到PATH:$ echo $PATH 显示内容/usr/local/sbin: /usr/local/bin: /usr/sbin:4 / 5/usr/bin: /sbin: /bin: /usr/games: /usr/local/arm/4.3.2/bin说明已经将交叉编译器的路径加入PATH。
Ubuntu下交叉编译源码包
Ubuntu下交叉编译源码包1、搭建交叉编译环境,可参考:2、配置环境变量,可参考:3、进⼊源码包根⽬录下,运⾏./configure。
configure 命令有很多参数可配置,可以⽤./configure --help 来查看。
在交叉编译过程中可设置--host,--target,--build这⼏个参数,如--host=mips-linux,--build=i686-pc-linux-gnu,--target=mips-linux。
其中,build就是你正在使⽤的机器,host就是你编译好的程序可以运⾏的平台,target就是你编译的程序可以处理的平台。
⼀般来说,我们平时所⽤的交叉编译⽤不到target,⽐如./configure --build=i386-linux --host=arm-linux就可以在386的平台上编译运⾏在arm板的程序了。
因为⼀般我们都是编译程序,⽽不是编译编译⼯具,如果我们编译编译⼯具,⽐如gcc,这个target就有⽤了。
如果我们需要在⼀个我们的机器上为arm开发板编译⼀个可以处理 mips程序的gcc,那么target就是mips了。
这些参数配置后,configure 时会读取源码⽬录下⾯的 config.sub ⽂件,查找、检查设置的参数是否⽀持,如mips架构是否⽀持、linux 操作系统是否⽀持等。
./configure --prefix参数表⽰⽣成的库⽂件所安装的⽬录,默认的是在/usr/local⽬录下。
其他参数含义可以通过./configure --help 来查看,configure 过程中若失败可通过查找config.log⽂件来查找出错原因。
./configure --diabale-可以把源码包中的某个模块不配置,编译的时候也就不编译。
4、make。
make 的过程如果前期配置了正确的环境变量并 configure 成功后⼀般都没遇到什么问题,具体问题具体解决,可以通过查看控制台打印出来的信息了解 make 的过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ubuntu交叉编译用法
Ubuntu是一个流行的Linux操作系统,拥有广泛的开发工具和软件包。
交叉编译是指将程序从一种操作系统和处理器架构编译成另一种系统和架构可运行的程序。
在本文中,我们将介绍如何在Ubuntu上进行交叉编译。
准备工作
在Ubuntu上进行交叉编译需要安装交叉编译工具链。
工具链是一组编译器、链接器、库和其他辅助工具,它们可以将源代码转换为目标平台的可执行文件。
通常,交叉编译工具链包括以下组件:
1. 交叉编译器
2. 库
3. 头文件
4. 静态链接器
5. 动态链接器
在ubuntu上,你可以通过命令行安装交叉编译工具链:
```shell
sudo apt install gcc-arm-linux-gnueabi
```
该命令将安装一个名为gcc-arm-linux-gnueabi的工具链,它可以用来将C和C++代码编译成ARM架构上的可执行文件。
其他的交叉编译工具链也可以通过类似的方式安装。
交叉编译的过程
编写交叉编译工具链的Makefile文件时,通常需要指定交叉编译工具链的路径和一些其他配置选项。
以下是一个简单的Makefile文件示例:
all: $(TARGET)
$(TARGET): $(SRC)
$(CC) -o $@ $<
clean:
rm -f $(TARGET)
```
在此Makefile文件中,我们指定交叉编译器的名称为arm-linux-gnueabi-gcc,它将从Ubuntu上的工具链中获取。
我们还指定了目标的名称和源代码文件的名称。
最后,我们指定了如何编译代码和如何清除生成的文件。
要编译代码,只需打开终端并在命令行中输入以下命令:
```
make
```
该命令将使用交叉编译工具链将源代码编译为ARM架构上的二进制文件。
如果你要在不同的ARM架构上运行代码,可能需要使用不同的交叉编译工具链。
例如,如果你要在Raspberry Pi上运行代码,你需要使用不同的工具链。
交叉编译具有许多好处。
以下是其中的一些:
1. 可以将代码移植到其他系统上。
通过交叉编译,你可以将代码编译为在其他系统
上运行的可执行文件。
2. 可以加快编译速度。
通常,交叉编译比在目标系统上编译代码要快得多。
这是因
为你可以在更快的系统上编译代码,而不是在目标系统上编译。
3. 可以节省资源。
在交叉编译过程中,你不需要在目标系统上安装任何开发工具或库。
这可以节省目标系统上的资源,并减少其风险。
总结
交叉编译是一种在Ubuntu上将代码编译为在其他系统和处理器架构上运行的可执行文件的方法。
它可以加快编译速度,节省目标系统上的资源,并允许代码移植到其他系统上。
在Ubuntu上进行交叉编译需要安装交叉编译工具链,并编写适当的Makefile文件。