QT/E配置文档

Qt/Extended 的Ubuntu配置

一)环境的搭建

1.  准备工作:

Qt/E环境配置需要三大文件:

a)        QT文件系统: qt-creator-linux-x86-opensource-2.5.2.bin

b)        Qt的源码: qt-everywhere-opensource-src-4.8.5.tar.gz

c)        触摸屏文件系统(作为测试用):tslib-1.4.tar.gz

d)        交叉编译工具:arm-linux-gcc-4.5.1.tar.gz

e)        VM操作系统:VMware-workstation-full-12.1.1-3770994.exe

f)         Ubuntu12.04操作系统:ubuntu-12.04-beta2-desktop-i386.iso

 

以上四个文件是必须的,可从下面的链接中获取:

链接:http://pan.baidu.com/s/1boCXgOR密码:o5ev

 

e和f两个系统请自行配置装载,作者在这里不再陈述。

 

2.  安装步骤:

1.       环境的搭建:Ubuntu12.04操作系统、arm-linux-gcc-4.5.1.tar.gz、tslib-1.4

a)        Ubuntu12.04的安装和初配置 (略)

b)        arm-linux-gcc-4.5.1.tar.gz配置(已配置好的请忽略该步骤)

1)       将文件共享到ubuntu的:/usr/local/下,解压

sudo tar –zxvfarm-linux-gcc-4.5.1.tar.gz (普通用户的解压方式)

2)       解压后生成一个名为user的文件夹,为了防止在配置环境的时候出现和Ubuntu系统的/usr目录有冲突现象,作者把该user/local/arm复制到Ubuntu下的/usr/local/下,形成目录为/usr/locar/arm,把解压后的文件夹删除

3)       配置环境变量:

进入环境变量配置文件:sudo vim ~/.bashrc中进行配置,添加

export PATH=$PATH:/usr/locar/arm/4.5.1/bin (注意这里是有冒号的(”:”))

4)       重新打开一个terminal,使该修改生效: sudosource ~/.bashrc

5)       查看是否成功:

arm-linux-gcc–v, 若出现以下则成功:


c)        配置触摸屏校验工具:

1)       将文件tslib-1.4.tar.gz共享到/opt目录下(当然读者可以放在任何你喜欢的目录下),解压:

sudo tar –zxvftslib-1.4.tar.gz,

完成后在/opt下生成一个目录:tslib

2)       进行配置加载:

1.        配置系统所需要的依赖文件:sudo apt-get install autoconfautomake libtool 这三个文件

2.        进入tslib目录,找到autogen.sh脚本文件,运行之。

sudo ./autogen.sh

3.        配置configure命令

sudo ./configure --prefix=/usr/local/tslib--host=arm-linux ac_cv_func_malloc_0_nonnull=yes (上下是一行的)

4.        最后执行编译命令:

make

make install

 

make过程中可能会遇到以下错误:


这是因为在函数ts_calibrate.c中的第227行和229行开始的open函数的参数写少了参数的权限,可以自行查看open的表达式:man 2 open

                         现在修改:

                         进入当前目录的tests中,vim  ./tests/ts_calibrate.c 修改

 

                         修改的内容如下:

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

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

                                  即可。

 

                         然后继续make

 

          以上配置成功的话,那么在/usr/local/tslib就会出现我们需要的库文件


以上文件主要使用到的是include和lib

(

命令解释:

--prefix=/usr/local/tslib 表示configure在/usr/local/中生成tslib这个目录;

--host=arm-linux 表示运行的环境是arm-linux;

ac_cv_func_malloc_0_nonnull=yes 为了防止交叉编译的出现undefined reference to ‘rpl_malloc’错误

)

 

2.      安装Qt Creator

将qt-creator-linux-x86-opensource-2.5.2.bin拷贝到Ubuntu目录下,运行文件:

sudo ./ qt-creator-linux-x86-opensource-2.5.2.bin

安装完成后再当前目录下生成一个目录为:qtcreator,可运行的文件为该目录下的bin/ qtcreator,(可以运行 ./ qtcreator/bin/ qtcreator,但是里面没有源代码)


说明暂时还不能进行Qt版本的识别,需要安装相应的Qt源代码,下面会给大家看演示相应的配置

 

如果你直接运行qtcreator,可能会发生以上的错误提示


这个是因为在自己相应的家目录中的.config/Nokia/下的文件权限不够,修改他的权限即可不会再次出现该情况

chmod  777  ~/.config/Nokia -R

 

3.       编译Qt库源代码

(该步骤安装时间比较长,请耐心等,全程弄好,估计需要3小时左右)

a)        将qt-everywhere-opensource-src-4.8.5.tar.gz拷贝到Ubuntu的opt目录下,并进行解压

sudo tar –zxvf qt-everywhere-opensource-src-4.8.5.tar.gz

生成qt-everywhere-opensource-src-4.8.5目录

b)        将qt-everywhere-opensource-src-4.8.5目录拷贝三份到/usr/local中,分别命名为Qt-PC,Qt-ARM,Qt-X86

 

c)        进入Qt-PC的编译(约1.5小时)

1)       由于在x11平台中进行编译,可能会遇到以下的错误:

Basic Xlibfunctionality test failed

这是因为Xlib库并没有被安装,因此需要安装该库来解决在X11中运行出错的问题:

sudo apt-get install libx11-dev libxext-dev libxtst-dev

 

2)       执行sudo ./configure

        

这里我们使用o选项,作为开源版本进行选择    

然后选择o之后,出现以下选项,这里我们选择yes,直接接受它本身提供的版本,省时间


在这过程你可能会遇到下面的提示测试失败,是因为没有进行x11平台的库的安装,这就是第一步先安装的原因。如果第一步安装了X11平台的库,这句话就不会出现,出现之后按照第一步进行软件更新即可,重新./configure即可


3)       执行make

4)       执行make install

 

d)        进入Qt-X86进行配置 (约3小时)

1)       这步骤主要是安装模拟器qvfb(Qt virtual framebuffer)

2)       配置configure

./configure  -embedded x86    -qt-gfx-qvfb    -qt-kbd-qvfb   -qt-mouse-qvfb

3)       make

4)       make install

以上三步的配置中时间会比较长,

配置完成之后会在/usr/local目录的Trolltech 生产QtEmbedded-4.8.5

5)       进入Qt-PC目录中的tools/qvfb目录执行以下操作:

                                  make  //在Qt-PC/bin中生成qvfb可执行文件,(当然可以通过命令行生成qvfb这个可执行文件,这里不再详述)

                                  sudo cp   /Qt-PC/bin/qvfb  /usr/local/Trolltech/QtEmbedded-4.8.5/bin

                                  将qvfb这个文件复制到QtEmbedded-4.8.5/bin下

                                (这一步可能会有make的错误, X11/extensions/XTest.h找不到这个文件,可以通过以下操作修复:

               Sudoapt-get install xorg-dev

               如果上述方法还不能解决,那么需要查看Qt-PC/tools/qvfb/下的Makefile,查看LIBS是否有-lXtst,没有则添加,然后重新make

               )

 上述的操作可能遇到以下问题:


这是因为png库动态库的链接失败,现在修改如下:

 

1.        查看自己系统大libpnb库: locate libpng


2.                建立上述图片的第一个动态库的动态链接

             ln  -s   /lib/i386-linux-gnu/libpng12.so.0 /lib/i386-linux-gnu/libpng.so

 

3.                修改当前目录的Makefile,打开找到 LIBS项(大概在第19行)

在LIBS末尾添加

-L/lib/i386-linux-gnu –lpng,然后重新编译即可

 

e)        进入Qt-ARM进行配置

1)       配置configure

./configure -prefix  /usr/local/Trolltech/QtEmbedded-4.8.5-arm-opensource -confirm-license -release -shared -embeddedarm -xplatform qws/linux-arm-g++ -depths16,18,24 -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib-qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff   -no-libmng-no-opengl -no-mmx  -no-sse  -no-sse2 -no-3dnow -no-openssl -no-webkit-no-qvfb -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor-no-xfixes  -no-xrandr -no-xrender-no-separate-debug-info -nomake examples  -nomake  tools   -nomake docs -qt-mouse-tslib  -I/usr/local/tslib/include  -L/usr/local/tslib/lib

 

其中-prefix  /usr/local/Trolltech/QtEmbedded-4.8.5-arm说明待会进行make或者make install的时候要生成的文件目录为QtEmbedded-4.8.5-arm,如果没有这个参数的话,待会生成的文件就是所谓的Qt-4.8.5,把原来已经生成的Qt-4.8.5覆盖,浪费了刚才编译的时间。

-I/usr/local/tslib/include -L/usr/local/tslib/lib使用到了我们之前配置触摸屏的库函数,这是为了以后移植Qt/E做好准备的

 

那么这时候你可能会遇到一些下面的错误:


                   这个问题是因为在configure的。第一句话说明在configure参数配置中,没有使用到pkg-config的,因此在configure的参数配置上添加:-force-pkg-config

./configure -force-pkg-config–prefix /usr/local/Trolltech/QtEmbedded-4.8.5-arm-opensource -confirm-license -release -shared -embedded arm -xplatformqws/linux-arm-g++ -depths 16,18,24 -fast -optimized-qmake -pch -qt-sql-sqlite-qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian  -host-little-endian -no-qt3support  -no-libtiff  -no-libmng -no-opengl -no-mmx -no-sse  -no-sse2 -no-3dnow-no-openssl -no-webkit -no-qvfb -no-phonon -no-nis -no-opengl -no-cups -no-glib-no-xcursor -no-xfixes  -no-xrandr-no-xrender -no-separate-debug-info -nomake examples   -nomake toolso   -nmake docs-qt-mouse-tslib -I/usr/local/tslib/include  -L/usr/local/tslib/lib

        当配置上面之后,可能还是会出现下面的情况:



      通常情况下都是在配置生成tslib库的时候路径不对或者配置tslib失败所导致的。因此我们暂时可以先把tslib库删除之后,重新编译编译一次。

(笔者曾试过把tslib库安装在一个共享的目录下,譬如samba下的共享目录,但是这样就会导致上面的过程无法通过。笔者猜想可能是共享的时候使用的不是编译好的静态库,而是使用的是外部动态链接库,导致环境配置不成功。当然读者可以尝试配置pkg-config的环境来配置该情况,但笔者水平有限,试过不成功。)

2)       Make

make之后可能出现以下的情况:

 

thread/qthread_unix.cpp: In function 'QThreadData*get_thread_data()':

thread/qthread_unix.cpp:182:12: error: 'currentThreadData' wasnot declared in this scope

thread/qthread_unix.cpp: In function 'void set_thread_data(QThreadData*)':

thread/qthread_unix.cpp:192:5: error: 'currentThreadData' wasnot declared in this scope

thread/qthread_unix.cpp: In function 'void clear_thread_data()':

thread/qthread_unix.cpp:201:5: error: 'currentThreadData' wasnot declared in this scope

thread/qthread_unix.cpp: In function 'QThreadData*get_thread_data()':

thread/qthread_unix.cpp:187:1: warning: control reaches end ofnon-void function

make[1]: *** [.obj/release-shared-emb-arm/qthread_unix.o] 错误 1

make[1]:正在离开目录 `/home/psr/sofsware/qt-arm/src/corelib'

make: *** [sub-corelib-make_default-ordered] 错误 2

 

这个时候需要修改qthread_unix.cpp qatomic_armv5.h两个文件

在当前目录下的./src/corelib/thread/qthread_unix.cpp中,必须把第一个出现的HAVE_TLS注销掉,因为链接库的时候影响了使用的函数


进入当前目录的qatomic_armv5.h文件中进行修改内容

sudo vim ./src/corelib/arch/qatomic_armv5.h

 


随着make不断在进行执行,可能会遇到以下一样的问题


 这是因为libQtGui.so找不到需要链接的函数库。因此在qmake.conf中进行修改如下:

 打开当前QT-ARM目录下qmake.conf,

 sudo vim./mkspecs/qws/linux-arm-g++/qmake.conf, 添加-lts即可

 

3)       make install

4)       完成上面的是时候,在/usr/local/Trolltech/中就会自动生成QtEmbedded-4.8.5-arm目录


4.       测试qvfb

在命令行中运行:

./qvfb

1.       如果读者是在root用户下运行的话,那么以后也将会并且只能在root权限下运行qvfb,如果需要改为普通用户下可以运行的话,可以在删除/tmp/qtembedded-0/目录即可,并且重新在普通用户下运行qvfb即可

2.       运行中可能生成的时候出现以下信息

QLock::QLock: Cannot get semaphore/tmp/qtembedded-linux/QtEmbedded-0 'd' (2, No such file or directory)

这个问题可以忽略不需要进行解决,解决这个问题也比较复杂,但不影响我们进行编译仿真。

 

3.  Qt creator配置:

1)       进入安装Qt Creator的目录中的bin中,运行./qtcreator

2)       打开Tools->Options->Build&Run->QtVersion,点击Add,选择刚才配置好的目录:

/usr/local/Trolltech/QtEmbedded-4.8.5/bin/qmake,点击确认

 

3)       重新启动qt creator,进行测试。

4)       点击file->new file orproject->Application->Qt Gui Application->choosen,然后修改名字,保存的路径等,会看到以下的界面

 

 

5)       一直next即可看到项目创建好的界面,点击左侧的project选项,点击Desktop的Run选项,然后在Run的配置中,点击Arguments,输入-qws

 

 

6)       打开Terminal,输入qvfb –width 800 –height 480 &  (&表示在后台运行,创建一个画布为800 * 480大小,待会项目的显示将会显示在该屏幕上),如下运行所示

 

二)编译生成ARM平台的可执行文件

Qt/Embedded_X86可以在qvfb上进行显示,那时因为产生的可执行程序的类型属于intel类型的,并非arm类型,而且arm类型的可执行程序不能再qvfb(qt virtual frameBuffer)中运行,只能把arm移植到ARM平台上才可以运行。运行的命令一般是:

    ./file –qws

现在讨论的是,怎么样产生Qt/E下的ARM可执行程序

1)  配置ARM编译工具

a)   打开Qt creator,工具—>选项—>构建和运行—>Qt版本—>手动设置—>添加

b)   找到并添加上面配置好的文件/usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake

c)   打开工具链,点击添加配置好的交叉编译器所带有的交叉编译工具

/usr/locar/arm/4.5.1/bin/arm-linux-g++,

同时ABI中可设置或选择 arm-linux-generic-elf-32bit(可以自定义设置)

(注意:作者这里的路径有更改,只要和您Ubuntu中的交叉编译一样就可以了)



d)   点击确定之后,新建一个空白的项目,然后会发现选择Embedded Linux的时候会出现以下的情况(需要先配置Embedded Linux,请看第e)步骤)


e)   修改上述的情况,按照以下步骤进行配置

1.  点击项目

2.  点击添加,然后会出现一个Embedded Linux,点击它,

3.  点击Embedded中的运行

4.  点击部署中的添加,把“部署设置”添加进来,其他不用操作

5.  在运行处点击添加“自定义执行档”,这个是主要来设置项目生成文件的保存

6.  配置矩形里面的东西,可先不用配置,以为还没有产生保存的文档

7.  左侧的运行图标变成绿色,表示可以执行构建,点击构建,会弹出自定义执行档的窗口,但是这时候已经产生了项目保存的文目录,点击找到当前目录下的保存目录(/home/bmc/dfgd-build-embedded-Qt_4_8_5__QtEmbedded-4_8_5-arm____/dfgd),然后点击确定即可

8.  点击构建运行,你会发现在应用程序输出框中出现


这是因为生成的是ARM平台的文件,不能再qvfb上运行的。这个问题笔者也没有解决,但是在保存的目录中查看文件的属性是为arm平台的可执行程序



(下面的两幅图为上面1~7步实际的步骤)

 


2)  利用命令行进行构建

a)   进入项目目录dfgd,运行

        i.     ./usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake dfgd.pro

       ii.     ./usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake

      iii.      Make

即可产生arm目标可执行文件

 

为了在任何地方都可以进行arm平台的qmake,那么现在进行全局环境变量的配置

sudovim   ~/.bashrc

在末尾上添加:

alias qmake=’ /usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake’

退出之后让配置生效,即可以立即生效

source  ~/.bashrc

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值