qte2.3.12多线程库libqte-mt的编译

    FriendlyArm2440的板子,之前的串口一直用QextSerialPort,定时查询方式读写串口。想提高效率,使用中断方式,查了查,linux里写终端驱动比较繁琐,又看到很多推荐使用多线程方式的。于是决定试试看,pro文件中加thread选项,生成Makefile中有-lqte-mt,link里加-lpthread。提示找不到libqte-mt,开始没搞明白,查了一下发现默认的库编译时候没有用-thread选项。也就是说,需要加-thread选项重新编译x86qtotpia和armqtopia两个包。

    参照FriendlyArm光盘文件里的build脚本,加-thread重新configure,make失败。翻来覆去几次,都是失败。只好去搜搜,最后找到了FriendlyArm官方论坛,里面版主已经有详细的解释。照法操作,一次成功。x86和arm的libqte-mt都OK了。

 

 Re:回 8楼(kasim) 的帖子

引用
引用第17楼liangruisan于2010-02-01 13:00发表的 回 8楼(kasim) 的帖子 :
高手,怎么“这可以通过在qte的配置上加上'-thread'参数做到”做才能有效果,能够在详细点吗?谢谢 了,我这个问题纠结了很久。谢谢了


由于qtopia 2.2.0的makefile里的问题,你现在只能自己手动编译出支持thread的libqte-mt.so. 具体做法如下:

1. 按照手册上的步骤,用“build”或者"build-all"脚本做一次完整的qtopia 2.2.0的编译;

2. 在解压出来的qtopia-2.2.0-FriendlyARM目录下执行
$source setQteEnv

3. 进入qtopia-2.2.0-FriendlyARM/qt2目录,清除之前编译生成的文件然后手动配置qt embedded以支持multi-thread:
$cd qt2
$make clean
$echo yes |./configure -embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -gif -thread

注 意:上面configure后的参数是我自己的配置,可能与你的不同。configure之后的参数应该与你自己x86-qtopia或者arm-qtopia目录下的“build“脚本里的”echo yes | ./configure -qte“之后的参数保持一致, 只是在最后加上"-thread"

4. 上面的步骤执行后会在当前目录下产生src-mt.mk文件,用编辑器将其内容的最后一行”cd src; $(MAKE) clean“删除或注释掉;

5. 编译libqte-mt
$make src-mt

编译完成后将在qtopia-2.2.0- FriendlyARM/qtopia/lib目录下生成所期待的libqte-mt.so.*文件。用nm命令可以看到现在qt embedded中就已经加入了QThread支持:

引用

alex@aling-xw4400:~/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2$ nm ../qtopia/lib/libqte-mt.so.2.3.12 |grep -i QThread
0015deb0 t _GLOBAL__I_qthread_unix.cpp
0039d0a0 b _ZL23qthreadposteventprivate
0039d094 b _ZL40QThreadPostEventPrivate_metaObj_unloader
0015ec40 T _ZN23QThreadPostEventPrivate10sendEventsEv
...
0038f1a0 V _ZTV23QThreadPostEventPrivate
0038f240 V _ZTV5QListI14QThreadQtEventE
0038f208 V _ZTV7QThread
0038f280 V _ZTV8QPtrDictI7QThreadE

 

 

原帖:http://www.arm9home.net/read.php?tid-2298-page-3-fpage-1.html

你可能感兴趣的:(qte2.3.12多线程库libqte-mt的编译)