Ubuntu Qt 交叉编译(树莓派2b)

在一个平台上生成另一个平台上的可执行代码。为什么要大费周折的进行交叉编译呢?一句话:不得已而为之。有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行所需要的编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。

  要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译源代码,最终生成可在目标平台上运行的代码。
常见的交叉编译例子如下:

1、在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。
2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。
3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。

一、具体名词

Linux下的大多数软件包都使用Autoconf/Automake工具自动生成Makefile,只要使用“./configure”,“make”,“make install”就可以把程序安装到Linux系统中去了。编译第三方源代码时,可以看下工程中的readme和install文件,一般情况下都会写编译步骤。

1、./configure 常用参数  [--build] | [--host] | [--target] | [--prefix] | [--help]

注意:host和--host不是一个意思,host是指宿主机,即编辑和编译程序的平台,是个名词;--host是设置执行文件所运行的主机,是个动词。

>> ./configure: 用来生成对应的 Makefile;
>> --build: 执行代码编译的主机,正常的话就是你的主机系统。若无指定使用host的值;
>> --host: 编译出来的二进制程序所执行的主机, 交叉编译工具链的前缀。因为绝大多数是如果本机编译就本机执行,所以这个值就等于build。但是交叉编译的时候build和host需要设置不同值,用host指定运行主机,即host != build的时候编译才是交叉编译。若无指定将会运行`config.guess‘来检测;
>> --prefix: 安装目录,比如 --prefix=/usr 意思是将该软件安装在 /usr下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share);
>> --help: 查看参数; 
>> --target: 这个参数比较特殊,表示需要处理的目标平台名称,主要在程序语言工具如编译器和汇编器上下文中起作用,若无指定使用host的值。一般用来编译工具,比如给arm开发板编译一个可以处理mips程序的gcc,那么--target=mips;
>>>> 举例说明:编译gcc
>> ./configure --build=i386-linux --host=arm-linux --target=mipsel-linux --prefix=$(pwd)/_install
用i386-linux的编译器进行gcc的编译,编译出的gcc运行在arm-linux, 编译结果存放到$(pwd)/_install路径下,编译出的gcc用来编译能够在mipsel-linux下运行的代码。

2、Makefile包含了一些基本的预先定义的操作:

>>make: 根据Makefile编译源代码,连接,生成目标文件,可执行文件;
>>make clean: 清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件;
>>make distclean: 类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile;
>>make test / make check: 检查make,确保make没有出错,一般在make install之前执行;
>>make install: 将编译成功的可执行文件安装到指定目录中,一般为/usr/local/bin目录;
>>make dist: 产生发布软件包文件(即distribution package)。这个命令将会将可执行文件及相关文件打包成一个tar.gz压缩的文件用来作为发布软件的软件包。它会在当前目录下生成一个名字类似“PACKAGE-VERSION.tar.gz”的文件。PACKAGE和VERSION,是我们在configure.in中定义的AM_INIT_AUTOMAKE(PACKAGE, VERSION);
>>make distcheck: 生成发布软件包并对其进行测试检查,以确定发布包的正确性。这个操作将自动把压缩包文件解开,然后执行configure命令,并且执行make,来确认编译不出现错误,最后提示你软件包已经准备好,可以发布了;

三、交叉编译源代码

1、环境
Ubuntu

2、树莓派交叉编译工具安装

step1. 下载树莓派交叉编译工具https://github.com/raspberrypi/tools
step2. 将源码放到各用户都能share的文件夹下,如/usr/tools
step3. 将交叉编译工具的路径加到环境变量中,为了以后启动不用再设置,我加到了bashrc中

step4. 检测是否安装成功

出现以下内容

到现在交叉编译环境已经配置完成

时间: 2024-09-29 17:30:49

Ubuntu Qt 交叉编译(树莓派2b)的相关文章

Qt Creator的安装与Qt交叉编译的配置

Qt Creator 的安装 到Qt官网下载Qt Creator  https://www.qt.io/download-open-source/ 其它旧版本点击Achieve连接下载 或登录http://download.qt.io/下载 下载前记得查看自己的linux系统情况 uname-a 我的是 1. i386 适用于intel和AMD所有32位的cpu.以及via采用X86架构的32位的cpu. 2. X86_64 适用于intel的Core 2 Duo, Centrino Core

树莓派2B+安装Debain操作系统

写在前面 本篇文章基于当前树莓派官方最新提供的Debain操作系统进行操作,Linux内核版本 4.14.71.本篇文章内容涵盖SD卡写入官方Debain操作系统,开启SSH连接,修改语言环境,改变当前的时区,并将官方默认的源替换成国内加速源的操作过程. 先决条件 树莓派2B+(只要是树莓派都可以)一张Class 10以上的16G的Micro内存卡 一个读卡器 一台带HDMI接口普通电脑显示器(通过HDMI转VGA的转换线也可以),一套键盘,鼠标 一台安装Windows的物理机器 安装系统 官方

rust 交叉编译树莓派程序

rust 交叉编译树莓派程序 使用 rust 写树莓派程序时,如果直接在树莓派上进行编译,速度非常慢,如果是 zero 那更加是慢到受不了.因此最好是能通过开发机编译完后,直接放到树莓派上运行. 由于开发机上的 cpu 架构.操作系统和目标机不同,开发机通常是 x86 架构,系统可以是 mac.linux.windows,而树莓派则为 armv6 或 armv7 的 linux 系统.未经过特殊处理,默认的编译工具链编译出的程序只适合开发机上运行,为特定目标编译需要一套别的编译工具链,这种方法被

ubuntu QT安装以及配置交叉编译环境

我的环境:ubuntu14.04  64位 1.下载Qt: 上网搜索 qt-opensource-linux-x64-5.3.0.run下载有好多百度云盘 要么在官网下载追新版本http://download.qt.io/official_releases/qt/5.6/5.6.1/ qt-opensource-Linux-x64-5.6.1.run这个.run文件既包含了SDK也包含了IDE:QtCreator 不用自己再编译好几个小时了 2.安装Qt:: 下载完一般在Download目录下$

QT交叉编译 ARM 版本

Qt4.8.5 为了支持开发板中的触摸屏,在编译 Qt 之前,要先编译 tslib 库. [email protected]:~# sudo gedit /etc/bash.bashrc IMX28环境变量做如下设置: export ARCH=arm export CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-no ne-linux-

LINUX主机上交叉编译树莓派详细教程

LINUX主机OS:Ubuntu14.04 64位,运行在wmware workstation 10上. 树莓派版本:raspberry pi 2 B型. 树莓派OS:官网下的的raspbian-jessie. 1.为什么需要交叉编译 在Ubuntu上直接编译一个.c源文件可以用系统自带的gcc编译器编译test.c gcc test.c -o test 然后执行生成的二进制文件 ./test 交叉编译就是把编译的过程在LINUX PC(或其它主机)上执行,然后拷贝二进制可执行文件到树莓派(或其

2440 Ubuntu建立交叉编译环境(root权限下)

1.将Mini2440-20130517.iso加载到Ubuntu光驱中去 2.进入光盘镜像,找到arm-linux-gcc-4.4.3.tar.gz 复制到  /home/muyang_ren(主目录) 如图 3.#su 4.#root密码 5.#cd /home/muyang_ren             //这是我的目录,你们的不一定是muyang_ren  ,具体在哪可以去主文件夹里找找. 6.#tar xvzf arm-linux-gcc-4.4.3.tar.gz  –C /    

ubuntu下交叉编译ffmpeg

环境:ubuntu16.04 交叉编译器版本:4.8.3 依赖x264,lame x264: 1.wget ftp://ftp.videolan.org/pub/x264/snapshots/last_stable_x264.tar.bz2 2.tar xvf last_stable_x264.tar.bz2 3.cd x264-snapshot-20170903-2245-stable 4.export CC=arm-linux-gnueabi-gcc 5.export AR=arm-linu

Ubuntu Qt arm-linux-androideabi-gcc: Command not found

:-1: error: /opt/Qt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-g++: Command not found 更换新pc,重新安装了Ubuntu12.04,Qt5.1,编译shanbaydict过程,出现错误,这是由于You are missing the OpenGL include files. Install the m