Tslib Qt Linux 交叉编译工具链gcc 软 件 环 境 搭 建

                                                                                            境 

 

 

简介:

0 - 软件平台

1 - 安装交叉编译环境

2 - 安装编译好的tslib 库

3 - 使用tslib源码包自己进行配置编译安装(可选)

4 - 进行tslib到开发板的移植与测试

5 - 安装Qt4.8.6开发环境

6 - 进行Qt到开发板的配置

7 - 软件源码编译

8 - QtCreator 的安装和配置(可选)

 

注意: 1 进行以下操作前,先确保当前主机的用户权限,推荐操作全在普通用户下完成,而非root用户。

          2 以下出现 红色字体处 表示是需要额外注意的地点,降低出错的的可能性。

 

 

0 软件平台

Linux : Ubuntu 12.04

Qt    : 4.8.6

Tslib : tslib-1.4

交叉编译工具链: gcc version 4.8.3 (Sourcery CodeBench Lite 2014.05-29)

 

 

1 安装交叉编译环境

1-1使用提供的压缩包:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2安装工具链,只需要将压缩包进行解压,并设置环境变量即可,解压后生成 arm-2014.05 目录,其中的bin里面包含工具链如

arm-none-linux-gnueabi-gcc (编译.c源文件)

arm-none-linux-gnueabi-g++(编译.c++源文件)的可执行文件。

 

user@ubuntu:~/toolchain$ ls

arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

user@ubuntu:~/toolchain$ tar -xjf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

user@ubuntu:~/toolchain$ ls

arm-2014.05  arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

user@ubuntu:~/toolchain$ ls arm-2014.05/bin/

arm-none-linux-gnueabi-c++  ...

 

1-2使用vi命令修改 当前所在用户的 .profile文件,在底部(快捷键 GG)加入交叉编译器的路径,按下ESC,输入:wq保存退出,可再次打开检查是否成功添加

export PATH=$PATH:/home/user/toolchain/arm-2014.05/bin/

 

1-3修改完成后,让.profile中设置的环境变量生效,使用source命令

user@ubuntu:~/toolchain/arm-2014.05/bin$ source /home/user/.profile

 

1-4在终端输入arm-none并按下TAB,如果看到诸如arm-none-linux-gnueabi-前缀的命令,则基本可以确定交叉编译器安装正确。

user@ubuntu:~/toolchain/arm-2014.05/bin$ arm-none-linux-gnueabi-

arm-none-linux-gnueabi-addr2line   arm-none-linux-gnueabi-gcc-ranlib

arm-none-linux-gnueabi-ar          arm-none-linux-gnueabi-gcov

arm-none-linux-gnueabi-as          arm-none-linux-gnueabi-gdb

arm-none-linux-gnueabi-c++         arm-none-linux-gnueabi-gprof

arm-none-linux-gnueabi-c++filt     arm-none-linux-gnueabi-ld

arm-none-linux-gnueabi-cpp         arm-none-linux-gnueabi-nm

arm-none-linux-gnueabi-cs          arm-none-linux-gnueabi-objcopy

...

 

2 安装编译好的tslib 库

2-1由于计费单元软件需要tslib的支持,所以需要先安装tslib库 ,这里直接将提供的编译好的库文件压缩包解压即可。解压tslib.tar.gz ,将其解压在新建的目录libfile下

user@ubuntu:~$ mkdir libfile

user@ubuntu:~/libfile$ ls

tslib.tar.gz

user@ubuntu:~/libfile$ tar xf tslib.tar.gz

user@ubuntu:~/libfile$ ls

tslib  tslib.tar.gz

user@ubuntu:~/libfile$ ls tslib

bin  etc  include  lib

 

 

3 使用tslib源码包自己进行配置编译安装(可选)

3-1首先需要检查一下需要的软件是否安装

sudo apt-get install automake

sudo apt-get install autogen

sudo apt-get install autoconf

 

3-2将提供的tslib源码包拷贝到新建的tslibfile文件夹中

user@ubuntu:~$ mkdir tslibfile

user@ubuntu:~/tslibfile$ ls

tslib-1.4.tar.gz

user@ubuntu:~/tslibfile$ tar -zxvf tslib-1.4.tar.gz

user@ubuntu:~/tslibfile$ ls

tslib  tslib-1.4.tar.gz

user@ubuntu:~/tslibfile$ cd tslib/

user@ubuntu:~/tslibfile/tslib$ ./autogen.sh

 

可能出现的错误和解决方法:

configure.ac:25: error: possibly undefined macro: AC_DISABLE_STATIC

      If this token and others are legitimate, please use m4_pattern_allow.

      See the Autoconf documentation.

configure.ac:26: error: possibly undefined macro: AC_ENABLE_SHARED

configure.ac:27: error: possibly undefined macro: AC_LIBTOOL_DLOPEN

configure.ac:28: error: possibly undefined macro: AC_PROG_LIBTOOL

autoreconf: /usr/bin/autoconf failed with exit status: 1

解决方法:

ubuntu下安装libtool

user@ubuntu:~/tslibfile/tslib$ sudo apt-get install libtool

 

3-3接着运行配置文件,再进行编译和安装

user@ubuntu:~/tslibfile/tslib$ ./configure --host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no  ac_cv_func_malloc_0_nonnull=yes  --prefix=/usr/local/

 

-prefix=/usr/local/是指定安装的路径,其实包括下文的安装配置,路径都可以不指定,默认就是安装到/usr/local/目录下注意这个路径会直接影响下面Qt源码编译安装的autoconfig.sh配置文件中的-I 和 -L 的指定,修改为对应的指定安装路径位置即可

 

user@ubuntu:~/tslibfile/tslib$ make

 

可能出现的错误和解决方法:

usr/include/i386-linux-gnu/bits/fcntl2.h:50:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments

    __open_missing_mode ();

                        ^

In function ‘open’,

    inlined from ‘main’ at ts_calibrate.c:229:11:

/usr/include/i386-linux-gnu/bits/fcntl2.h:50:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments

    __open_missing_mode ();

                        ^

make[2]: *** [ts_calibrate.o] Error 1

make[2]: Leaving directory `/home/user/tslibfile/tslib/tests'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/home/user/tslibfile/tslib'

make: *** [all] Error 2

解决方法:

gcc 新版本编译器对语法检查严格,在源文件 ./tests/ts_calibrate.c 中第 227 行

 

// 源文件

// if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {

//     cal_fd = open (calfile, O_CREAT | O_RDWR);

// } else {

//   cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR);

// }

// 需要更改成如下形式

if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {

    cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);

} else {

cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);

 

//最后开始安装,注意要使用管理员权限

user@ubuntu:~/tslibfile/tslib$ sudo make install

...  ...  ...

make[2]: Leaving directory `/home/user/tslibfile/tslib'

make[1]: Leaving directory `/home/user/tslibfile/tslib'

 

 

 

4 进行tslib到开发板的移植与测试

4-1将安装路径下的整个tslib文件夹,下载至开发板上,我存放的路径为/usr/local

4-2通过超级终端,打开tslib文件夹下的etc/ts.conf文件

# module_raw input一行前面的符号和空格去掉,注意空格也不能留

 

4-3再打开环境变量文件/etc/profile,并添加相应内容

[root@DCP-3000L usr]# vi /etc/profile

export TSLIB_ROOT=/usr/local/tslib

export TSLIB_TSDEVICE=/dev/input/event2

export QWS_MOUSE_PROTO=tslib:/dev/input/event2

export TSLIB_CALIBFILE=/etc/pointercal   

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf    

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  

export TSLIB_FBDEVICE=/dev/fb0  

export TSLIB_CONSOLEDEVICE=none

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

 

其中,TSLIB_ROOT更换为自己实际存放的路径;

另外,TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下那个文件

 

4-4执行测试命令,重启开发板(使系统读取profile环境变量),进入tslib/bin目录,执行触摸屏校准程序

[root@DCP-3000L usr]# ./ts_calibrate

 

如果出现tslib的触摸屏五点校准画面,至此,tslib的安装移植成功完成。

也可执行此目录下其他的程序来体验触摸屏!

 

 

安装Qt4.8.6开发环境

5-1将提供的Qt4.8.6 的源码包qt-everywhere-opensource-src-4.8.6.tar.gz拷贝到新建的目录Qt4.8下,并解压。

user@ubuntu:~/Qt4.8$ ls

qt-everywhere-opensource-src-4.8.6.tar.gz

user@ubuntu:~/Qt4.8$ tar xf qt-everywhere-opensource-src-4.8.6.tar.gz

user@ubuntu:~/Qt4.8$ ls

qt-everywhere-opensource-src-4.8.6  qt-everywhere-opensource-src-4.8.6.tar.gz

user@ubuntu:~/Qt4.8$ cd qt-everywhere-opensource-src-4.8.6/

user@ubuntu:~/Qt4.8/qt-everywhere-opensource-src-4.8.6$ ls

bin              demos     LGPL_EXCEPTION.txt  projects.pro  translations

changes-4.8.6    doc       lib                 qmake         util

config.profiles  examples  LICENSE.FDL         README

config.tests     imports   LICENSE.GPL3        src

configure        include   LICENSE.LGPL        templates

configure.exe    INSTALL   mkspecs             tools

 

5-2接下来要对源码进行配置编译再安装,因为针对嵌入式平台需要进行一些针对性配置,这里生成一个自动配置文件,可以通过修改文件来方便的更改配置。

user@ubuntu:~/Qt4.8/qt-everywhere-opensource-src-4.8.6$ touch autoconfig.sh

user@ubuntu:~/Qt4.8/qt-everywhere-opensource-src-4.8.6$ vi  autoconfig.sh

user@ubuntu:~/Qt4.8/qt-everywhere-opensource-src-4.8.6$ chmod a+x autoconfig.sh

//在 autoconfig.sh中输入以下内容,按下ESC,输入:wq保存退出

./configure \

-confirm-license \

-embedded arm \

-xplatform qws/linux-arm-gnueabi-g++ \

-release \

-opensource  \

-fast  \

-stl \

-no-accessibility  \

-no-scripttools  \

-no-mmx  \

-no-multimedia  \

-no-svg  \

-no-3dnow  \

-no-sse  \

-no-sse2  \

-no-libmng  \

-no-libtiff  \

-no-multimedia  \

-silent  \

-qt-libpng  \

-qt-libjpeg  \

-make libs  \

-nomake tools \

-nomake examples \

-nomake docs  \

-nomake demos \

-nomake translations \

-no-nis \

-no-cups \

-no-iconv  \

-no-dbus  \

-no-openssl  \

-little-endian \

-qt-freetype  \

-depths all \

-qt-gfx-linuxfb  \

-no-gfx-transformed  \

-no-gfx-multiscreen  \

-no-gfx-vnc  \

-no-gfx-qvfb  \

-qt-kbd-linuxinput  \

-no-glib  \

-qt-zlib \

-no-phonon \

-no-phonon-backend \

-no-webkit \

-no-javascript-jit \

-no-sql-db2  \

-no-sql-ibase \

-no-sql-oci \

-no-sql-odbc \

-no-sql-psql \

-qt-sql-sqlite \

-plugin-sql-sqlite \

-no-sql-sqlite2 \

-no-sql-mysql \

-no-sql-tds \

-no-neon \

-no-qt3support \

-qt-mouse-linuxinput \

-qt-mouse-tslib \

-plugin-mouse-tslib \

-no-mouse-linuxtp \

-no-script \

-no-largefile \

-I /home/user/libfile/tslib/include \

-L /home/user/libfile/tslib/lib

 

 

上面的主要参数含义说明如下
-embedded arm: 表示将编译针对 arm 平台的 embedded 版本; 
-xplatform qws/linux-arm-gnueabi-g++ \ 表示使用 linux-arm-gnueabi- 交叉编译器进行编译
-qt-mouse-tslib: 表示将使用 tslib 来驱动触摸屏;

-I /home/user/libfile/tslib/include  

-L /home/user/libfile/tslib/lib   对应的就是上一步移植的tslib的头文件和库文件路径

如果需要指定安装路径可以在开始加入-prefix=/usr/local/(自己的路径),这里使用默认路径

/运行./autoconfig.sh 生成makefile文件

 

过程可能或出现的问题及解决方法:

1

make: g++: Command not found

make: *** [project.o] Error 127

针对这个问题是因为g++没有安装,通过sudo apt-get install g++安装。

如有必要还要安装sudo apt-get install build-essential

 

2

在安装g++完成后再次运行./configure后不会再报未发现g++之类的错误,可是又出现了"Basic XLib functionality test failed!”

对于这个错误时因为没有安装xlib库造成的,安装即可解决。

首先:sudo apt-get install libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev

然后:sudo apt-get install build-essential

 

5-3./autoconfig.sh 配置完成后,可以看到下面信息,说明配置已经这一步已经成功

Qt is now configured for building. Just run 'make'.

Once everything is built, you must run 'make install'.

Qt will be installed into /usr/local/Trolltech/QtEmbedded-4.8.6-arm

To reconfigure, run 'make confclean' and 'configure'.

 

5-4接下来执行make 进行编译,编译时间会经历很久,视个人电脑配置而定

5-5最后make install安装,安装完成后可以在安装目录/usr/local/Trolltech/QtEmbedded-4.8.6-arm 下查看对应文件

root@ubuntu:/home/user/Qt4.8/qt-everywhere-opensource-src-4.8.6# make

root@ubuntu:/home/user/Qt4.8/qt-everywhere-opensource-src-4.8.6# make install

root@ubuntu:/home/user/Qt4.8/qt-everywhere-opensource-src-4.8.6# ls /usr/local/Trolltech/QtEmbedded-4.8.6-arm/

bin  include  lib  mkspecs  plugins

 

5-6定义Qt环境变量,使用vi命令修改~/.bashrc,在~/.bashrc底部加入一下定义

alias qmake-arm=/usr/local/Trolltech/QtEmbedded-4.8.6-arm/bin/qmake

 

5-7配置Qt环境变量,使用vi命令修改~/.profile,在~/.bashrc底部加入一下定义

Export QMAKESPEC=/usr/local/Trolltech/QtEmbedded-4.8.6-arm/mkspecs/qws/linux-arm-gnueabi-g++

5-8使用source 命令让配置生效

user@ubuntu:~$ source ~/.bashrc

user@ubuntu:~$ qmake-arm -v

QMake version 2.01a

Using Qt version 4.8.6 in /usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib

user@ubuntu:~$ source ~/.profile

到此,Qt开发环境已经安装完成

 

6 进行Qt到开发板的配置

6-1拷贝上一步搭建好的Qt开发环境库文件至开发板

6-2打开环境变量文件/etc/profile,并添加相应内容设置环境变量

export QTDIR=/opt/qt4.8.6

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QWS_MOUSE_PROTO=tslib:/dev/input/event2

export QT_QWS_FONTDIR=QTDIR/lib/fonts

 

7 软件源码编译

7-1将提供的源码拷贝到主机自己的工作文件夹下并解压

user@ubuntu:~/Work$ ls

src.tar.bz2

user@ubuntu:~/Work$ tar xvf src.tar.bz2

user@ubuntu:~/Work$ ls src

charger      charger.yml       communication  lib       README.md  state      charger.pro  charger_zh_CN.qm  config         main.cxx  resource   utils  charger.qss  charger_zh_CN.ts  include        Makefile  run.sh     view

 

7-2编译源码使用一下命令,第一次编译需要等待一小段时间

user@ubuntu:~/Work/src$ qmake-arm

user@ubuntu:~/Work/src$ make

 

7-3接下来就是运行软件,将运行的软件需要的文件放入新建的tcu文件夹下:

user@ubuntu:~/Work$

user@ubuntu:~/Work$ cp src/charger ./tcu

user@ubuntu:~/Work$ cp src/charger.qss ./tcu

user@ubuntu:~/Work$ cp src/charger.yml  ./tcu

user@ubuntu:~/Work$ cp src/charger_zh_CN.qm   ./tcu

user@ubuntu:~/Work$ cp src/run.sh   ./tcu

user@ubuntu:~/Work$ cp src/config    ./tcu  -rf

user@ubuntu:~/Work$ cp src/resource    ./tcu  -rf

user@ubuntu:~/Work$ ls tcu/

charger  charger.qss  charger.yml  charger_zh_CN.qm  config  resource  run.sh

 

7-4tcu文件夹拷贝到计费单元的文件系统中,使用以下命令启动计费单元软件

[root@DCP-3000L tcu]# /sbin/ip link set can0 type can bitrate 125000 restart-ms  1000

[root@DCP-3000L tcu]# ifconfig can0 up

[root@DCP-3000L tcu]# ./run.sh

 

 

 

 

8  QtCreator 的安装和配置

8-1前面已经编译了Linux下的ARM平台的QT库,下面就针对QtCreator这个IDE进行相应的配置,方便进行应用程序的开发类似于之前的操作,先创建一个文件夹,QtCreator,然后拷贝可执行文件至目录下。直接执行按照向导完成安装

user@ubuntu:~$ make QtCreator

user@ubuntu:~/QtCreator$ ls

qt-creator-linux-x86-opensource-2.4.1.bin

user@ubuntu:~/QtCreator$ ./qt-creator-linux-x86-opensource-

2.4.1.bin

 

8-2安装完毕后,按照下面步骤完成必要的配置:

1在主界面中从菜单栏点击"工具"->"选项"->在左侧点击“构建和运行”界面如下图所示。

 Tslib Qt Linux 交叉编译工具链gcc 软 件 环 境 搭 建_第1张图片

从图中可以看到,IDE并没有自动识别安装的QT,这是因为在缺乏系统环境变量的情况下,不知道程序安装到了什么地方,所以这里需要手动设置,手动设置很简单,只需要点击添加编译的QT安装文件中的qmake文件即可,注意是安装文件,并不是之前解压的源文件。

默认的安装路径为/usr/local/Trolltech这个文件夹下,具体路径可以参见上图

到这里就告诉IDE 安装QT的位置了,由于需要进行编译开发,接下来还需要指定编译器,点击“编译器”选项卡,如下图所示。

 Tslib Qt Linux 交叉编译工具链gcc 软 件 环 境 搭 建_第2张图片

如图中所示,Qt Creator已经检测到X86的GCC,而我们要是做arm平台开发的话还需要指定用于arm开发的交叉工具链,我的安装路径为/home/user/toolchain/arm-2014.05/bin/需要指定g++文件,如图中所示。配置完成后,点击“应用”。

到此,就可以很方便的开始使用QtCreator这个强大的IDE来进行软件开发

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(qt,交叉编译,gcc,linux,环境搭建)