本篇主要讲述基于frame buffer的qt交叉编译,可直接用于服务器版本linux(无Desktop),大大降低了空间使用率和资源使用率。参考自网上许多文章,大多不记得链接了,主要参考在文章末尾注明,有兴趣的可点击查看。
一、环境说明
-PC系统:ubuntu14.04 LTS x86
- 编译器:gcc-linaro-arm-linux-gnueabihf4.9
(arm-linux-gneabihf-gcc 与 arm-none-linux-gnueabi-gcc 的不同,使用arm-linux-gnueabihf-gcc编译的程序,后面在开发板上执行时会出现nosuch file or directory)
- 开发平台:CubieTruck
- 开发板系统:debian-server-ct-nand-v1.0.img
二、下载源码
交叉编译器下载:http://download.csdn.net/detail/sway913/9316421
expat源码下载: http://sourceforge.net/projects/expat/files/expat/
dbus源码的下载:http://dbus.freedesktop.org/releases/dbus/
expat-2.1.0和dbus-1.2.30
三、准备工作
1. 配置交叉编译器
(1). 解压gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.xz
对于解压后的文件夹,我将其改名为arm,然后使用命令mvarm/ /opt/将其移动到opt/目录下面。环境变量可要可不要,编译中发现有时环境变量不起作用,索性使用绝对地址。
(2). 测试交叉编译器:
一定要先行测试,编译一次几个小时都算少的,我就做了很多无用功,花费一个星期才成功。
建两个目录arm_gcc、arm_g++,在两个文件夹中分别新建HelloWorld.c、HelloWorld.cpp
//HelloWorld.c
#include"stdio.h"
intmain()
{
printf("gcc running!\n");
return0;
}
//HelloWorld.cpp
#include "iostream"
usingnamespace std;
intmain()
{
cout<<"g++ running!"<<endl;
return0;
}
然后到两个文件夹下分别编译
sudo /opt/arm/bin/arm-linux-gnueabihf-gcc HelloWorld.c -o helloc
sudo /opt/arm/bin/arm-linux-gnueabihf-g++ HelloWorld.cpp hellocpp
然后将2个产生的a.out改名为ac.outacpp.out,拷贝到开发板上执行,查看是否能执行,若是能够输出gccrunning、g++running就证明交叉编译器可用,不行就更换交叉编译器
3.安装expat
(1). 解压tar-zxvf expat-2.1.0.tar.gz
(2). 配置
cd命令进入文件夹,输入:
sudo CC=/opt/arm/bin/arm-linux-gnueabihf-gcc ./configure--host=arm-linux --prefi