error: 'QSslSocket'

本文介绍如何解决编译支持SSL的Qt/E浏览器时遇到的问题。通过选用正确的OpenSSL版本,并进行交叉编译,最终实现Qt/E对SSL的支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重新编译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
漫长的两个小时#¥@%!……
大功告成!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值