1. 通过Package Manager安装gcc-4.5、developer-gnu、developer/icu
2. 将Qt 4.8.3的源码解压,进入源码目录后执行:
./configure -platform solaris-g++ -no-webkit -no-qt3support -no-declarative >./configure.logs
部分输出:
… …
Creating qmake. Please wait…
gmake: Nothing to be done for `first’.
rm -f endiantest.o
rm -f *~ core *.core
rm -f endiantest
rm -f Makefile
rm -f endiantest.o
rm -f *~ core *.core
rm -f endiantest
rm -f Makefile
This target is using the GNU C++ compiler (solaris-g++).
Recent versions of this compiler automatically include code for
exceptions, which increase both the size of the Qt libraries and
the amount of memory taken by your applications.
You may choose to re-run configure with the -no-exceptions
option to compile Qt without exceptions. This is completely binary
compatible, and existing applications will continue to work.
Build type: solaris-g++
Architecture: i386
Build ……………… libs tools examples demos docs translations
Configuration ………. release shared dll largefile stl precompile_header mmx 3dnow sse sse2 sse3 ssse3 sse4_1 sse4_2 avx minimal-config small-config medium-config large-config full-config phonon phonon-backend accessibility opengl reduce_exports ipv6 clock-gettime clock-monotonic getaddrinfo ipv6ifname getifaddrs system-jpeg system-png png system-tiff system-freetype system-zlib nis cups sun-libiconv glib gstreamer dbus openssl x11sm xshape xvideo xsync xrender mitshm fontconfig xkb icu concurrent xmlpatterns multimedia audio-backend svg script scripttools release
Debug ……………… no
Qt 3 compatibility ….. no
QtDBus module ………. yes (run-time)
QtConcurrent code …… yes
QtGui module ……….. yes
QtScript module …….. yes
QtScriptTools module … yes
QtXmlPatterns module … yes
Phonon module ………. yes
Multimedia module …… auto
SVG module …………. yes
WebKit module ………. no
JavaScriptCore JIT ….. To be decided by JavaScriptCore
Declarative module ….. no
Support for S60 …….. no
Symbian DEF files …… no
STL support ………… yes
PCH support ………… yes
MMX/3DNOW/SSE/SSE2/SSE3. yes/yes/yes/yes/yes
SSSE3/SSE4.1/SSE4.2….. yes/yes/yes
AVX………………… yes
Graphics System …….. default
IPv6 support ……….. yes
IPv6 ifname support …. yes
getaddrinfo support …. yes
getifaddrs support ….. yes
Accessibility ………. yes
NIS support ………… yes
CUPS support ……….. yes
Iconv support ………. sun
Glib support ……….. yes
GStreamer support …… yes
PulseAudio support ….. no
Large File support ….. yes
GIF support ………… plugin
TIFF support ……….. plugin (system)
JPEG support ……….. plugin (system)
PNG support ………… yes (system)
MNG support ………… plugin (qt)
zlib support ……….. system
Session management ….. yes
OpenGL support ……… yes (Desktop OpenGL)
OpenVG support ……… no
NAS sound support …… no
XShape support ……… yes
XVideo support ……… yes
XSync support ………. yes
Xinerama support ……. runtime
Xcursor support …….. runtime
Xfixes support ……… runtime
Xrandr support ……… runtime
Xrender support …….. yes
Xi support …………. no
MIT-SHM support …….. yes
FontConfig support ….. yes
XKB Support ………… yes
immodule support ……. yes
GTK theme support …… yes
SQLite support ……… plugin (qt)
OpenSSL support …….. yes (run-time)
Alsa support ……….. no
ICD support ………… no
libICU support ……… yes
Finding project files. Please wait…
… …
Qt is now configured for building. Just run ‘gmake’.
Once everything is built, you must run ‘gmake install’.
Qt will be installed into /usr/local/Trolltech/Qt-4.8.3
To reconfigure, run ‘gmake confclean’ and ‘configure’.
3. 执行:
gmake
… …
编译过程中遇到错误:
std::_List_node_base::_M_hook(std::_List_node_base*)
std::_List_node_base::_M_unhook()
… …
解决办法:在生成的Makefile中的LFLAGS项后面追加 -Wl,-R,/usr/gcc/4.5/lib和LIBS项前面追加-L/usr/gcc/4.5/lib
或者在第二步configure时通过 -L补上该内容。
参考:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43882
Yuri 2010-04-25 01:17:04 UTC
Sorry, my bad.
It really was picking up the default libstdc++.so from the OS installation. I
used -R/path/to/4.5.0/libstdc++.so to fix this library path. But it turns out
that -L/path/to/4.5.0/libstdc++.so is also required in addition to this,
otherwise the default libstdc++.so is looked up by linker.
Maybe this is a bug in linker, don’t know.
But those new symbols revealed the problem.