ubuntu12.04 下编译qt-4.6.0总结

本文详细介绍了如何在Ubuntu 12.04上编译Qt 4.6.0,包括解决编译过程中遇到的问题,如g++版本冲突、openssl兼容性问题及SSLv2错误处理。

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

    qt-4.6.0可为是比较老的版本了,在新版的ubuntu上编译可为是困难重重,但在嵌入式开发和软件移植中依然起着桥梁作用,以此文章总结一下编译时遇到的困难。

 

编译环境:

                             qt-everywhere-opensource-src-4.6.0.tar.gz (可以在qt ftp上下载)

                  g++-4.4;gcc-4.4

                  openssl-0.9.8q

                  libx11;libfreetype6;libavahi-gobject;libsm;libxrender;libfontconfig;libxext (可以通过apt-get install获得)

 

编译过程:

        ubuntu12.04版本中默认的g++版本是4.6,但4.6版本的g++,gcc无法编译。在编译时不会报错,但在连接qt库时会无法应用。所以要安装最适合编译qt各种版本的g++-4.4和gcc-4.4。安装完后查看g++目录(gcc方法相同)。

ls /usr/bin/g++* -l  //查看g++目录,发现默认g++ ->g++-4.6
sudo rm /usr/bin/g++ //删除软连接
sudo ln -s /usr/bin/g++ /usr/bin/g++ //从新建立连接
g++ -v

 

设置gcc-4.4的方法同上。

 

    Openssl的安装比较麻烦,可以用新立得,删除自带的Openssl-1.0.1,下载openssl-9.8.0q的源码http://ftp.openssl.org/source/openssl-0.9.8q.tar.gz 为什要用低版本的openssl,原因在于高版本的openssl修改了很多关于ssl的部分,会导致编译出错。

    编译源码

    

tar -zxf openssl-0.9.8q.tar.gz
cd openssl-0.9.8q/
./config  --prefix=/usr/local --openssldir=/usr/local/ssl
make && make install
./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
make clean
make && make install


两次编译生成动态连接库。解决了无法找到opensslv.h

 

       这时候我们要对qt的源码进行修改主要是针对SSLV2错误的处理。由于SSLV2已经很少使用,在这里我们采用直接注释掉代码的方法。打开qt的源码目录../qt-everywhere-opensource-src-4.6.0/src\network\ssl。找到qsslsocket_openssl_symbols.cpp和qsslsocket_openssl_symbols_p.h打开,将其中的存在参数SSLv2_client_method和SSLv2_server_method所在的所有行,将其整行注释掉。这样就解决了编译时出现的

undefined reference to SSLv2_server_method

undefined reference to SSLv2_client_method

 

编译qt

./configure -xxxx  //xxxx为不需要的模块或连接动态连接库
make 
sudo make install


这样编译就差不多完成了。但还没有加入环境变量在qt目录下

export QTDIR=/usr/local/Trolltech/Qt-4.6.0
export PATH=$QTDIR/bin:$PATH
export QMAKESPEC=$QTDIR/mkspecs/default


这样算是大功告成了,编译qt make时间很长,大概1h-2h,要看./configure的模块而定

 

 


 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值