天天看点

QT移植到ARM的环境搭建

版本:Ubuntu10.04 LTS / Qt SDK 4.7.3 / arm-linux-gcc 4.4.3 

一、安装ARM的交叉编译工具链arm-linux-gcc编译器

1.下载arm-linux-gcc-4.4.3.tar.gz,解压后复制到自己的目录,比如/usr/local/arm;

2.进入到文件目录,比如 cd /usr/local/arm,并用tar zxvf arm-linux-gcc-4.4.3.tar.gz解压文件;

3.在解压的文件夹中一直进入到 4.4.3 文件夹,这里就是 arm-linux-gcc的 安装位置了;

4.使用 vi /etc/enviroment 修改PATH,添加/usr/local/XXX/4.4.3/bin:。注意“XXX”为你安装的绝对路径;

5.使用source /etc/profile 使修改的路径生效,使用 arm-linux-gcc -v 可以验证查看安装的编译工具版本。 

二、安装tslib(可选)

    编译tslib-1.4.1.tar.bz2,这个东西是触摸屏库,编译QT4.7.2时要用到,先拷贝到一个目录,然后用tar xfvj tslib-1.4.1.tar.bz2进行解压缩,进入tslib-1.4.1这个目录,运行./build就可以编译了。编译完之后,会生成一个__install的文件夹,里面有多个文件夹,包括inclue 和lib,后面编译Qt的时候会用到。编译完之后,我把它更改名称为mytslib,并且拷贝到/usr/local/qt-arm目录下。这样tslib库的绝对路径是:/usr/local/qt-arm/mytslib/lib了,而tslib包含文件夹得绝对路径是:/usr/local/qt-arm/mytslib/include 。

三、编译qt-everywhere并安装

1.下载qt-everywhere,http://download.qt.io/archive/qt/4.7/

2.解压后cd到该文件夹,依次执行下面的命令:

./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -

no

-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -

no

-mouse-linuxtp -I/usr/

local

/qt_arm/mytslib/include -L/usr/

local

/qt_arm/mytslib/lib -

no

-qt3support

make

sudo make install

注:1). 编译过程比较耗时,特别是mke和make install,一般要几个小时。

    2). 上面的配置信息是可以根据需要进行修改的,详细配置信息可以参考http://www.qtcn.org/bbs/read.php?tid=19214。

3). 其中 -I/usr/

local

/qt_arm/mytslib/include -L/usr/

local

/qt_arm/mytslib/lib 为前面安装的tslib,如果没有安装,则删除这些参数。

3.安装完成后,执行  sudo chmod 775 mkspecs -R  命令为mkspecs文件夹下的各个文件和目录添加读的权限。

四、安装qt creator

    下载linux版qt后运行安装即可(也可提前安装),注意版本合适即可(这里我的Ubuntu10.01安装的QT4.7,安装完成后在 应用程序>编程>下面就可以直接打开)。 

五、配置qt creator

    不同版本也许有所不同,网上有不少关于qt交叉编译环境配置的文章可以参考。

    1. 工具->选项->Qt4  点右侧加号在“手动设置”里增加一个,qmake路径填第二步中的安装目录下的qmake路径,默认在“/usr/local/Trolltech/QtEmbedded-4.7.3-arm/bin/qmake”。版本不同会略有不同。

    2. 打开项目后点左侧“项目”,在 Buid Setting 中,将里面的 Generl 的 using Qt version 选择刚才配置的Qt版本即可编译生成arm版程序了。

    最后可以在生成文件的目录下,用 file + 文件名 命令查看生成文件的属性是否正确。

六、移植qt creator的依赖库

    1.移植所有可能的依赖库

    具体步骤可以参考http://bbs.elecfans.com/jishu_459569_1_1.html,其优点是方便后期维护,在增加了软件的功能后,无需对依赖库作任何修改,缺点是较占用空间;

    2.移植软件需要的依赖库

    1)在Linux下查看软件的依赖库,查看在Linux系统的依赖库输入:ldd XXX  查看ARM下的依赖库则输入:arm_linux_readelf -d XXX 其中XXX为你软件的名字;

    2)将所需要的库文件都拷贝到Linux的 /mnt/user/lib 下,并按需要建立软连接。比如可能你在上面查看到需要 libQtCore.so.4 ,在它实际是 libQtCore.so.4.7.2 的软连接,则你应该先将 libQtCore.so.4.7.2 拷贝到 /mnt/user/lib 下,在为其建立一个软连接并取名为 libQtCore.so.4 即可;

    3)将所有依赖的库全部做好后,将所有库文件和软连接打包,拷贝到ARM的 /mnt/user/lib 下在解压即可。

    采用这种方式,可以节省很多的空间,但是在你增加了软件使用的库后,需要相应的在ARM上增加,才能让软件正常工作。