转帖自http://blog.csdn.net/ilearncpp/article/details/8235612
1 下载qt4.8.3源码包:
http://qt-project.org/downloads
得到 qt-erverwhere-opensource-src-4.8.3.tar.gz之后,拷贝至solaris并解压(遇到问题:在solaris10中只能解压部分文件,不能全解,因此先在ubuntu12.04中解压好,再传文件到solaris10),将解压好的文件存放在指定solaris的目录下(例如:/opt/qt-x11-4.8.3)
2 查看qt官方文档步骤:
- ./configure
- gmake
- gmake install
错误1:配置错误
在./configure时出错:gmake:CC:cammond not found
出错原因:因为设置编译器为CC,但实际编译器是gcc和g++。CC没有link到gcc和g++。
解决办法:
在 /etc/profile(全局起作用)或者 $HOME/.profile(相应用户起作用)文件中添加如下脚本
PATH=/usr/ccs/bin:.:/usr/sbin:/usr/bin:/usr/ucb:/etc:.:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/openwin/bin:
export PATH
QTDIR=/usr/local/Qt-4.8.3
export QTDIR
PATH=$PATH:$QTDIR/bin
export PATH
QMAKESPEC=/opt/qt-x11-4.8.3/mkspecs/solaris-g++
export QMAKESPE
QMAKESPEC=/qt源码包存放目录/makespecs/选定的编译器, 注意要与solaris系统的编译器对应。如:用solaris-cc就如上报错,改为solaris-g++则通过 ./configure。
错误2:gmake错误
在solaris上使用gmake,但是到一半时出错:
../3rdparty/harfbuzz/src/harfbuzz-buffer.c: In function `HB_Error hb_buffer_ensure(HB_BufferRec_*, HB_UInt)':
../3rdparty/harfbuzz/src/harfbuzz-buffer.c:77: error: invalid conversion from `void*' to `HB_PositionRec_*'
../3rdparty/harfbuzz/src/harfbuzz-buffer.c:81: error: invalid conversion from `void*' to `HB_GlyphItemRec_*'
../3rdparty/harfbuzz/src/harfbuzz-buffer.c:86: error: invalid conversion from `void*' to `HB_GlyphItemRec_*'
../3rdparty/harfbuzz/src/harfbuzz-buffer.c:97: error: invalid conversion from `void*' to `HB_GlyphItemRec_*'
../3rdparty/harfbuzz/src/harfbuzz-buffer.c: In function `HB_Error hb_buffer_duplicate_out_buffer(HB_BufferRec_*)':
../3rdparty/harfbuzz/src/harfbuzz-buffer.c:115: error: invalid conversion from `void*' to `HB_GlyphItemRec_*'
../3rdparty/harfbuzz/src/harfbuzz-buffer.c: In function `HB_Error hb_buffer_new(HB_BufferRec_**)':
../3rdparty/harfbuzz/src/harfbuzz-buffer.c:134: error: invalid conversion from `void*' to `HB_BufferRec_*'
../3rdparty/harfbuzz/src/harfbuzz-buffer.c: In function `HB_Error _hb_buffer_clear_positions(HB_BufferRec_*)':
../3rdparty/harfbuzz/src/harfbuzz-buffer.c:215: error: invalid conversion from `void*' to `HB_PositionRec_*'
gmake[1]: *** [.obj/release-shared/harfbuzz-buffer.o] Error 1
gmake[1]: Leaving directory `/opt/qt-x11-4.8.3/src/corelib'
gmake: *** [sub-corelib-make_default-ordered] Error 2
原因:
1 源代码文件 /opt/qt-x11-4.8.3/src/corelib 的makefile出错 ,从gmake进入或离开目录得知(make[1]: Leaving directory `/opt/qt-x11-4.8.3/src/corelib'),
CC=g++
CXX=g++
如此,编译c文件就用g++编译,但c++有严格的类型检查,因此出现如上错误。另外,在进入opt/qt-x11-4.8.3/src/gui时,也是同样的问题,同样修改makefile解决。
2 可能是gcc版本原因,solaris 10自带gcc 3.4.3,重新安装了gcc3.4.6
解决办法:
1 修改相应目录下的makefile文件,使得 用gcc编译c源文件
CC=gcc
CXX=g++
2 下载gcc3.4.6源码,并安装,不要用 gcc3.4.3。 (可能用gcc3.4.3也能通过,这个不确定,可以试试)