|
_______用qt/embedded,会出现错误:
[maidisula@localhost ~]$ cd wdwj/wdzl/qt/test/helloworld/
[maidisula@localhost helloworld]$ qmake -project
[maidisula@localhost helloworld]$ qmake
[maidisula@localhost helloworld]$ make
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -O2 -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/local/arm/qte/mkspecs/default -I. -I. -I/usr/local/arm/qte/include -o helloworld.o helloworld.cpp
g++ -Wl,-rpath,/usr/local/arm/qte/lib -o helloworld helloworld.o -L/usr/local/arm/qte/lib -lqte-mt
/usr/bin/ld: skipping incompatible /usr/local/arm/qte/lib/libqte-mt.so when searching for -lqte-mt
/usr/bin/ld: cannot find -lqte-mt
collect2: ld 返回 1
make: [helloworld] 错误 1
______解决:
libqte-mt.so,是“需要”你在对qte(一般如qtopia-free-2.1.1包中包含的qt-2.3.10就是qt/e包)这个软件包进行configure 的时候加上参数 -thread,这样make后在$QTEDIR/lib/中生成libqte-mt.so(.*)文件。如果不加上-pthred,生成libqte.so(.*)库文件。
这两种文件的不同是,前者还能支持qt内部的线程,而后者不支持,后者只支持posix pthread线程。
一个程序里面不可能同时链接这两个库。
上面我们看到报错,可以从g++ 的参数-DQT_THREAD_SUPPORT中得到验证,他表示需要多线程支持。至于-DQT_THREAD_SUPPORT表示qt内部线程还是posix,为什么,我还不知道。
我在qtopia-free-2.1.1包的qt/e中,带-thread进行配置,结果能生成libqte.so(.*)和libqte-mt.so(.*)。 |
|