现在的位置: 首页 > 综合 > 正文

error: ‘QSslSocket’

2014年10月19日 ⁄ 综合 ⁄ 共 1541字 ⁄ 字号 评论关闭

重新编译Qt/E的原因

使用按原先:http://hi.baidu.com/dancesimply/blog/item/867c8b09579fe6d862d9861a.html
方法交叉编译的Qt/E,编译支持SSL的demos browser,出现错误:
error: 'QSslSocket' has not been declared
而头文件和相关类以确实在源文件中做了声明。
查找资料后发现,Qt 的 SSL 需要 OpenSSL 库的支持,需要单独编译。

匹配版本及下载地址

Qt/Embedded 4.5.2 及 OpenSSL 0.9.7 版本
编译支持 OpenSSL 版本的 Qt/Embedded 需要独立的 OpenSSL Toolkits 库及头文件支持
我使用的是 Qt/E 4.5.2,首先尝试了 OpenSSL 最新的1.0.0 版本,./configure 可以正常通过,
但编译时提示 ssl 相关文件编译缺少 "STACK" 等的 Declare
于是根据 Qt 文档中所说,支持 "OpenSSL (version 0.9.7 or later)",选择了0.9.7版本,遂成功。

下载地址分别为:
Qt/E 4.5.2:
OpenSSL 0.9.7m:http://www.openssl.org/source/openssl-0.9.7m.tar.gz

交叉编译OpenSSL

下载后解压缩openssl-0.9.7m.tar.gz,进入根目录
打开Makefile,修改62行:CC = cc 为 CC= $YOUR_COMPILER
$YOUR_COMPILER 为你要使用的交叉编译器
make & make install

完事后,根目录下会出现 libssl.a & libcrypto.a 两个需要用的库文件
为便于文档描述,此处设 $OPENSSL_LIB 为当前 openss l根目录,$OPENSSL_INCLUDE 为 $OPENSSL_LIBS/include

配置并编译支持OpenSSL的Qt/E

解压缩下载完的qt-embedded-linux-opensource-src-4.5.2.tar.bz2,进入根目录
执行如下命令输出环境变量:
export OPENSSL_LIBS='-L$OPENSSL_LIB -lssl -lcrypto'
注意,此处 OPENSSL_LIBS 与上节中 $OPENSSL_LIB 的区别

执行配置命令:
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-armv5 -release -static -no-fast -no-largefile -qt-sql-sqlite -no-qt3support -nomake examples -nomake demos -qt-zlib -qt-gif -qt-libtiff -qt-libpng
-qt-libmng -qt-libjpeg -no-rpath -silent -optimized-qmake -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,24,32 -qt-mouse-tslib -no-separate-debug-info -I $TSLIB_INCLUDE -L $TSLIB_LIBS -I $OPENSSL_INCLUDE -L OPENSSL_LIB -opensource
注意,此处需要加入编译好的tslib库及头文件,参见:
http://hi.baidu.com/dancesimply/blog/item/867c8b09579fe6d862d9861a.html

执行编译、安装命令:
make & sudo make install
漫长的两个小时#¥@%!……
大功告成!

【上篇】
【下篇】

抱歉!评论已关闭.