Fedora22编译Qt3.3.X
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的更多相关文章
- [VIM插件]fedora22编译vim7.4对perl组件支持的问题
在fedora22下,重新编译安装vim7.4的时,在编译perl组件支持时,出现如下错误: /bin/perl -e 'unless ( $] >= 5.005 ) { for (qw(na ...
- 使用bcc32做在windowXP上qt3.2.1编译环境的配置
1.安装borland C++编译器,编译器文件所在目录下的文件如下: 其中bcc32.cfg和ilink32.cfg文件是自己加进去的,bcc32.cfg内容是-I"C:\Borland\ ...
- 编译OpenCV文档
概述 使用OpenCV的过程中经常查看文档,每次都去官网查看,不过国内访问速度很慢,有一份本地的文档就好了.本文列出了在Linux(Fedora)系统上从OpenCV源码编译出documentatio ...
- LINUX 编译安装 PHP 环境
今天终于有时间 总结一下 linux 的编译安装 php 环境同学给我发了他写的文档 ,基本就可以实现编译安装了我同学文章地址: http://penghui.link/articles/2016/0 ...
- qt 编译问题总结
1)使用make命令编译Qt原码时出现了 /usr/bin/ld: cannot find -lXrender 问题: /usr/bin/ld: cannot find -lXrender ...
- 编译Linux内核
下面的实验以 debian7.5 64bit 为例. 获取源码 获取 debian7.5 本身的源码非常简单: sudo apt-get install linux-source https://ww ...
- Qt与VS2005/2008的完美配合(自己编译Qt4.5.1的详细步骤)
介绍 用过Linux的人想必都知道Qt(不是QuickTime,呵呵)这个名称,KDE就是用Qt写的,我也是接触Linux后才认识它的. Qt原先是奇趣科技TM(Trolltech)的产品,由Haav ...
- linux内核系列(一)编译安装Linux内核 2.6.18
1.配置环境 操作系统:CentOS 5.2 下载linux-2.6.18版本的内核,网址:http://www.kernel.org 说明:该编译文档适合2.6.18以上的Linux内核版本,只需所 ...
- VIM+qmake编译示例程序HelloQt出错问题的解决(文件名一定要使用.cpp,否则就会默认使用gcc编译,当然通不过)
之前看到很多初学Qt的Linux友们在使用qmake编译第一个HelloQt或者HelloWorld程序时报错,并且始终找不到原因. 前几天我也遇到了同样的问题,我用的是<精通Qt4编程> ...
随机推荐
- The C Programming Language Exercise
1-9 : Write a program to copy its input to its output, replacing each string of one or more blanks b ...
- StrangeIoc框架学习----在项目中实战
最近,因为公司的项目一直在研究StrangeIoc框架,小有所得,略作记录. StrangeIoc是一款基于MVCS的一种框架,是对MVC思想的扩展,是专门针对unity开发的一款框架,非常好用. 一 ...
- Fiddler测试WebApi的Post方法报错
标题头要加 Content-Type: application/json,Request Body中写json数组.
- 《大道至简》第三章读后感+ppt课后作业
大道至简读后感 ——第三章团队 古人云“三人为众”,众则是指团体或团队.对于一个团队而言,重要的是凝聚力,大家能在一起把拳头握紧那么产生的力量就不紧紧是能以1+1=2 来 ...
- linux使用grep和find查找内容
1,在某个路径下查文件. 在/etc下查找“*.log”的文件 find /etc -name “*.log” 2,扩展,列出某个路径下所有文件,包括子目录. find /etc -name “*” ...
- Ubuntu 查看和杀死进程
1.ps -e 2.netstat -antup 3.kill pid 4.pgrep 进程名 5.killall 进程名 6.kill -9 pid
- OpenSSL主配置文件openssl.cnf
虽说配置文件很多设置不用修改就能直接使用,但是了解它是配置openssl相关事项所必须的.而且要实现复杂多功能,必然要对配置相关了然于心. 1.man config 该帮助文档说明了openssl.c ...
- Python 2.7_初试连接Mysql查询数据导出到excel_20161216
由于每天到公司都需要先执行一遍检测操作,观察数据是否导入完整,今天想到能否自动连接Mysql执行SQL并导出数据,每天到公司直接查看excel文件即可 时间紧,代码初次试验,边摸索边学习吧. xlsx ...
- EntityFrameWork 使用时碰到的小问题
EntityFrameWork 使用时碰到的小问题 1,在使用orm访问数据库的相目里,也要引用EntityFrameWork.dll,否则无法使用orm 否则,编译错误 错误 5 "Sys ...
- WAMPP安装后mysql无法启动
上午 10:23:42 [mysql] This may be due to a blocked port, missing dependencies, 上午 10:23:42 [mysql] imp ...