FC22编译QT3

安装g++

dnf install gcc-c++

1,configure

./configure -thread -no-nis -system-libpng -system-libjpeg -system-libmng -system-zlib -xft -sm

2,gmake

2.1 error: 'ptrdiff_t' does not name a type

打开include\qvaluelist.h 加入#include <stddef.h>

 

2.2 forward declaration of 'png_info {aka struct png_info_def}'

这是png15之后的api升级了,参考

https://github.com/alekseysidorov/gentoo-stuff/blob/master/x11-libs/qt/files/qt-3.3.8-libpng15.patch

打开kernel\qpngio.cpp

在首行#include <png.h>后加入

#include <zlib.h>

 

setup_qt函数中png_get_IHDR函数后面加入

png_colorp info_ptr_palette = NULL;

int info_ptr_num_palette = 0;

if (png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)) {

    png_get_PLTE(png_ptr, info_ptr, &info_ptr_palette, &info_ptr_num_palette);

}

 

png_bytep info_ptr_trans_alpha = NULL;

int info_ptr_num_trans = 0;

png_color_16p info_ptr_trans_color = NULL;

 

if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {

    png_get_tRNS(png_ptr, info_ptr, &info_ptr_trans_alpha, &info_ptr_num_trans, &info_ptr_trans_color);

}

if ( bit_depth == 1 && info_ptr->channels == 1 ) { 改为

if ( bit_depth == 1 && png_get_channels(png_ptr, info_ptr) == 1 ) {

163行

const int g = info_ptr->trans_values.gray; 改为

const int g = info_ptr_trans_color->gray;

187行

&& info_ptr->num_palette <= 256 ) 改为

&& info_ptr_num_palette <= 256 )

196行

if (!image.create(width, height, bit_depth, info_ptr->num_palette

改为

if (!image.create(width, height, bit_depth, info_ptr_num_palette

201行

while ( i < info_ptr->num_trans ) {

image.setColor(i, qRgba(

info_ptr->palette[i].red,

info_ptr->palette[i].green,

info_ptr->palette[i].blue,

info_ptr->trans[i]

)

);

i++;

}

改为

            while ( i < info_ptr_num_trans ) {

                image.setColor(i, qRgba(

                    info_ptr_palette[i].red,

                    info_ptr_palette[i].green,

                    info_ptr_palette[i].blue,

                    info_ptr_trans_alpha[i]

                    )

                );

                i++;

            }

303行:

if (setjmp(png_ptr->jmpbuf)) { 改为

if (setjmp(png_jmpbuf(png_ptr))) {

488行:

if (setjmp(png_ptr->jmpbuf)) { 改为

if (setjmp(png_jmpbuf(png_ptr))) {

510行:

info_ptr->channels = 一段注释掉

527行:    //png_set_sBIT(png_ptr, info_ptr, 8);

info_ptr->sig_bit.red = 8;

info_ptr->sig_bit.green = 8;

info_ptr->sig_bit.blue = 8;

注释掉,添加

    png_color_8 sig_bit;

    sig_bit.red = 8;

    sig_bit.green = 8;

    sig_bit.blue = 8;

    png_set_sBIT(png_ptr, info_ptr, &sig_bit);

551行:

info_ptr->palette[i].red = qRed(rgb);

info_ptr->palette[i].green = qGreen(rgb);

info_ptr->palette[i].blue = qBlue(rgb);

改为

            info_ptr_palette[i].red = qRed(rgb);

            info_ptr_palette[i].green = qGreen(rgb);

            info_ptr_palette[i].blue = qBlue(rgb);

上面添加:

png_colorp info_ptr_palette = NULL;

int tmp;

png_get_PLTE(png_ptr, info_ptr, &info_ptr_palette, &tmp);

573行:

info_ptr->sig_bit.alpha = 8;

改为

        png_color_8p sig_bit;

        png_get_sBIT(png_ptr, info_ptr, &sig_bit);

        sig_bit->alpha = 8;

        png_set_sBIT(png_ptr, info_ptr, sig_bit);

1063行

if (setjmp(png_ptr->jmpbuf)) { 改为

if (setjmp(png_jmpbuf(png_ptr))) {

1090行

if (setjmp(png_ptr->jmpbuf)) { 改为

if (setjmp(png_jmpbuf(png_ptr))) {

1150行:

unused_data = (int)png->buffer_size; // Since libpng doesn't tell us 改为

unused_data = png_process_data_pause(png, 0);

 

 

2.3 qjpegio.cpp:59:21: fatal error: jpeglib.h: No such file or directory

yum install libjpeg-devel

 

2.4 qmngio.cpp:58:20: fatal error: libmng.h: No such file or directory

yum install libmng-devel

 

2.5 undefined reference to `qInitImages_designercore()'

qInitImages_designercore() 原本因该在

tools/designer/designer/qmake_image_collection.cpp

文件中,打开一看,文件中没有这个函数

该文件不是qt自带的文件,是通过命令生成的:

/qt3/bin/uic  -embed designercore images/designer_adjustsize.png -o qmake_image_collection.cpp

运行该命令报错:

libpng error: bad parameters to zlib

uic: cannot load image file images/designer_adjustsize.png

归结原因是qt无法读取png图片.

最终定位原因,是qt自带的zlib和系统的版本不匹配!

configure中加入-system-zlib

顺利编译通过

2.6 qmake: command not found

3,重新加入xft参数configure

报错:

Xft support cannot be enabled due to functionality tests!

Turn on verbose messaging (-v) to ./configure to see the final report.

If you believe this message is in error you may use the continue

switch (-continue) to ./configure to continue.

用-v查看:

Xft auto-detection... ()

Found libXft.so in /usr/lib

Found libXft.so in /lib

Found X11/Xft/Xft.h in /usr/include

Found Xft version 2.3.2

Could not find freetype2/freetype/freetype.h anywhere in  /usr/X11R6/include  /usr/include /include

freetype.h在/usr/include/freetype2/下面,查找的路径多了个freetype,手工建立一个目录把头文件拷贝进去.

可以正常configure了.gmake了

4, OpenGL

查看configure信息

OpenGL auto-detection... ()

Found GLU lib in /usr/lib

Found GL lib in /usr/lib

Found Xmu lib in /usr/lib

Found GL/gl.h in /usr/include

Could not find GL/glu.h anywhere in

找不到glu头文件,没打开OpenGL支持.

yum install mesa-libGLU-devel

yum install libXmu-devel

5,SM

kernel/qapplication_x11.cpp:5964:26: fatal error: X11/SM/SMlib.h: No such file or directory

yum install libSM-devel

6,设置环境变量

#export QT env

export QTDIR=/qt3

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export DISPLAY=:0.0

#end export QT env

Fedora22编译Qt3.3.X的更多相关文章

  1. [VIM插件]fedora22编译vim7.4对perl组件支持的问题

    在fedora22下,重新编译安装vim7.4的时,在编译perl组件支持时,出现如下错误: /bin/perl -e 'unless ( $] >= 5.005 ) { for (qw(na ...

  2. 使用bcc32做在windowXP上qt3.2.1编译环境的配置

    1.安装borland C++编译器,编译器文件所在目录下的文件如下: 其中bcc32.cfg和ilink32.cfg文件是自己加进去的,bcc32.cfg内容是-I"C:\Borland\ ...

  3. 编译OpenCV文档

    概述 使用OpenCV的过程中经常查看文档,每次都去官网查看,不过国内访问速度很慢,有一份本地的文档就好了.本文列出了在Linux(Fedora)系统上从OpenCV源码编译出documentatio ...

  4. LINUX 编译安装 PHP 环境

    今天终于有时间 总结一下 linux 的编译安装 php 环境同学给我发了他写的文档 ,基本就可以实现编译安装了我同学文章地址: http://penghui.link/articles/2016/0 ...

  5. qt 编译问题总结

    1)使用make命令编译Qt原码时出现了 /usr/bin/ld: cannot find -lXrender 问题: /usr/bin/ld: cannot find -lXrender      ...

  6. 编译Linux内核

    下面的实验以 debian7.5 64bit 为例. 获取源码 获取 debian7.5 本身的源码非常简单: sudo apt-get install linux-source https://ww ...

  7. Qt与VS2005/2008的完美配合(自己编译Qt4.5.1的详细步骤)

    介绍 用过Linux的人想必都知道Qt(不是QuickTime,呵呵)这个名称,KDE就是用Qt写的,我也是接触Linux后才认识它的. Qt原先是奇趣科技TM(Trolltech)的产品,由Haav ...

  8. linux内核系列(一)编译安装Linux内核 2.6.18

    1.配置环境 操作系统:CentOS 5.2 下载linux-2.6.18版本的内核,网址:http://www.kernel.org 说明:该编译文档适合2.6.18以上的Linux内核版本,只需所 ...

  9. VIM+qmake编译示例程序HelloQt出错问题的解决(文件名一定要使用.cpp,否则就会默认使用gcc编译,当然通不过)

    之前看到很多初学Qt的Linux友们在使用qmake编译第一个HelloQt或者HelloWorld程序时报错,并且始终找不到原因. 前几天我也遇到了同样的问题,我用的是<精通Qt4编程> ...

随机推荐

  1. linux下RDP客户端及服务器

    tsclient redsktop remmina   -->对ubuntu支持的非常不错 XRdp 集合vnc作为rdp服务器端使用;

  2. 提权GrantPrivilege

    大概一个多月前学习了提权的知识,当时一直不知道提权到底具体是为了干什么.只是模糊的知道提高权限,获得别的进程的一些东西.后来慢慢的学习的多了,知道了一个叫做ReadProcessMemory的函数,第 ...

  3. 如何在tpl模版的div块中加ztree

    ld-ztree.tpl <div class="ld-ztree-container"> <div class="ld-ztree-header te ...

  4. 自己用C语言写PIC32 serial bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 从15年12月份以来我 ...

  5. SQL Server 2012 AlwaysOn 亲身实历记

    亲身经历的一个项目,老板忽然提出,对数据库的负债要实施分流,来个数据库一个负责读,而另一个负责写,后台是需要同步两个数据库的状态.找了很多的资料,发现新版的alwayson可以实现这个功能. 研读了a ...

  6. git乱码问题解决

    etc\gitconfig文件中增加以下内容: [gui]     encoding = utf-8 [i18n]     commitencoding = gbk [svn]     pathnam ...

  7. flume log4j配置

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.依赖jar包导入,通过maven管理,pom文件增加如下配置: <!-- log4j输出日志到flume的appender依赖包 --& ...

  8. Vim配置(k-vim)

    无意发现一个vim的插件 转载:http://www.cnblogs.com/yxy2829/p/5250587.html 截图 solarized主题 molokai主题 安装步骤 1. clone ...

  9. NFS服务器原理

    NFS服务器   port:2049      NFS 为 Network FileSystem 的简称,它的目的就是想让不同的机器.不同的操作系统可以彼此分享个别的档案啦!目前在 Unix Like ...

  10. MSSQL日志传送出现“LSN 太晚,无法应用到数据库”

    一个月之前配置了日志传送的数据库,在今天早上收到作业警报:"LSRestore_ServerName_Databasename"运行失败,到历史记录中查看,错误信息如下 消息 20 ...