最近,因为有好几个项目都都要用到曲线图,所以决定认真把曲线图做成一个类。实现时,可以自由设定其它大小,刻度等一些参数。
还以比较喜欢VS2003的集成开发环境,写代码,调试,都比在linux下方便,所以就索性在windows写。花了两天时间,曲线图做出来了。那就在linux跑一下吧,程序能编译通过,执行后,发现背景图片一个都没。问题就来了。。。
考虑到这个类要自动适应不同大小,所以背景图,我全是用2*28等这样比较小的像素填充上去的,用的
void QPainter::drawTiledPixmap ( int x, int y, int width, int height, const & pixmap, int sx = 0, int sy = 0 )
在windows上很正常,但在linux下主是画不出来,后来做了个小的测试,单独写了一个小程序,发现,当窗口比较大时,这些图片,有时根本画不出不,有时能画出一部分来,窗口小时,基本上都能画出来。还有就是,图片像素大点话,也有可能画出来。
第一时间,想到的就是gcc版本太低,redhat9.0,自带的gcc是3.2.2。拿出自己的老笔记本(Dell D40都快成古董了,哈~),那个本子里以前装过ArchLinux+QTEmbedded4.3.4,gcc4, 编译、执行,一切正常。
那应该就是gcc版本低的问题了,于是就开始进入安装gcc4的旅途。。。
之前看过QT文档,里面提过,一些建议的gcc版本,和与之对应编译出来的库的大小。x86下,文档里写的是gcc4.2.4,那好吧,就装这个。
总结一下gcc4.2.4在redhat9.0上的安装过程:
一、cp gcc-4.2.4.tar.gz /tmp/
二、tar zxvf gcc-4.2.4.tar.gz 解压出来gcc-4.2.4目录
三、建立编译目录: mkdir gcc-4.2.4-build
四、建立安装目录:mkdir /usr/local/gcc-4.2.4
五、cd 到gcc-4.2.4-build,接下来的操作都是在这个目录下完成的
六、配置:
../gcc-4.2.4/configure --prefix=/usr/local/gcc-4.2.4 --enable-threads=posix --disable-checking --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++
七、make;make install
八、设定环境变量,在/etc/profile里加入如下:
PATH=/usr/local/gcc-4.2.4/bin:$PATH
export PATH
LD_LIBRARY_PATH=/usr/local/gcc-4.2.4/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
九、注销一下,或source /etc/profile,然后gcc -v看一下版本,如果是gcc-4.2.4就对了。
装完gcc4后,QT4.5还得得新装一遍,从昨晚9点一直编译到12点钟,一个漫长的等待。虽然已经是凌晨零点了,但还是迫不及待地试一下QT程序,结果有点失望,跟gcc3.2.2的结果一样,背景图片还是填不上去。问题可能比较麻烦了,睡觉去,明天再说了。
早上到公司后,当然是马上再试两把了,还是那样。那说明背景图片填不上去,可能跟gcc的版本没有关系,但为什么在arcchlinux上就行呢? archlinux的也是gcc4,版本可能有少稍微差别,但应该不是问题,这里面唯一的区别那就是redhat9的qt是x11版本的,而archlinux装的是embedded版的。 背景图片填不出来,应该是X11导致的,或许有BUG,或许X11版本太低。
接下来,要做的实验就是同时在redhat上面装一个X11版本qt,再装一个embedded版qt,同时跑一下测试程序,看结果。。。 说动手就动手,再在就开始装
分两实验:
第一步,用redhat9.0自带的gcc装分别装两个版本的qt
第二步,在redhat9.0上,用自己装的gcc4.2.4装qt的两个版本。
第一步的结果很快就出来了,qt-embedded-linux-opensource-src-4.5.0在自带的gcc3.2.2编译出错。原因:gcc版本太低。 既然embedded版的装不上去,也没什么可比性了,马上启动第二步 2009.08.06 15:45
第二步的结果也有了,结果是用gcc4.2.4也装不上去qt-embedded4.5. 2009.08.07 09:02
这两步实验都失败了。。。
但在archlinux上能装上qt-embedded4.5,而且图片背景填充也都没问题。 看来,以后是不是考虑改玩archlinux了,redhat9太老了,事太多。。
阅读(1662) | 评论(0) | 转发(0) |