source: trunk/doc/src/platforms/platform-notes-rtos.qdoc

Last change on this file was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

  • Property svn:eol-style set to native
File size: 10.8 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation (qt-info@nokia.com)
6**
7** This file is part of the documentation of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:FDL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in a
14** written agreement between you and Nokia.
15**
16** GNU Free Documentation License
17** Alternatively, this file may be used under the terms of the GNU Free
18** Documentation License version 1.3 as published by the Free Software
19** Foundation and appearing in the file included in the packaging of this
20** file.
21**
22** If you have questions regarding the use of this file, please contact
23** Nokia at qt-info@nokia.com.
24** $QT_END_LICENSE$
25**
26****************************************************************************/
27
28/*!
29 \page platform-notes-vxworks.html
30 \title Platform and Compiler Notes - VxWorks
31 \contentspage Platform and Compiler Notes
32 \target VxWorks
33
34 \note VxWorks is a community supported platform. See the
35 \l{Supported Platforms} page for more information.
36
37 This page contains information about the Qt for VxWorks port. More
38 information about the combinations of platforms and compilers supported
39 by Qt can be found on the \l{Supported Platforms} page.
40
41 \tableofcontents
42
43 \section1 Supported Versions
44
45 Qt has been tested on WindRiver VxWorks 6.7 in kernel mode using the
46 vendor supplied GCC compiler, targetting both the x86 simulator
47 (simpentium) and Power-PC devices (ppc).
48 VxWorks' RTP mode is currently not supported.
49
50 \section1 Limitations
51
52 The VxWorks kernel has an optional POSIX compatibility layer, but this
53 layer does not implement all POSIX functionality needed for a complete
54 Qt port.
55
56 \table
57 \header \o Function \o Notes
58 \row \o QProcess
59 \o Not available - VxWorks has no concept of processes.
60 \row \o QSharedMemory
61 \o Not available - VxWorks has only a global, flat address space.
62 \row \o QSystemSemaphore
63 \o Not available - VxWorks has no concept of processes.
64 \row \o QLibrary
65 \o QLibrary is only a small stub to make it possible to build
66 static plugins.
67 \row \o QCoreApplication
68 \o Can only be instantiated once. Qt's Q(CoreE)Application is
69 tightly coupled to one address space and process, while VxWorks
70 only supports one global address space and has no concept of
71 processes.
72 \row \o Phonon
73 \o There is no standard audio backend, which could be integrated into Phonon.
74 \row \o Qt3Support
75 \o The Qt3Support library is not available on VxWorks.
76
77 \endtable
78
79 \section1 Build Instructions
80
81 Qt for VxWorks needs to be \l{Cross-Compiling Qt for Embedded Linux
82 Applications}{cross-compiled} on a Linux host. \c configure and \c make
83 the build like you would with a standard \l{Cross-Compiling Qt for
84 Embedded Linux Applications}{embedded Linux cross build}. Building the
85 VxWorks simulator would be done like this:
86
87 \code
88 <path/to/qt/sources>/configure -xplatform unsupported/vxworks-simpentium-g++ -embedded vxworks -exceptions -no-gfx-linuxfb -no-mouse-linuxtp -no-mouse-pc -no-kbd-tty
89 make
90 \endcode
91
92 \list
93 \o \c{-xplatform unsupported/qws/vxworks-simpentium-g++} - selects the x86 simulator mkspec for VxWorks
94 \o \c{-embedded vxworks} - builds the embedded version of Qt and sets the architecture to VxWorks
95 \o \c{-exceptions} - see General Notes below
96 \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp}, \c{-no-mouse-pc} and \c{-no-kbd-tty} are Linux specific and won't work on VxWorks
97 \endlist
98
99 \section1 General Notes
100
101 \list
102
103 \o Configuring with \c{-exceptions} is necessary, because the VxWorks
104 6.7 g++ headers require exceptions to be enabled when compiling C++
105 code.
106
107 \o Configure's \c{-xplatform} can be any of
108 \c{unsupported/vxworks-(simpentium|ppc)-(g++|dcc)}, but \c{dcc}
109 (WindRiver DIAB compiler) has not yet tested been tested with Qt 4.6 and
110 VxWorks 6.7.
111
112 \o Building shared libraries with \c{-shared} (the default) doesn't
113 really build shared libraries, like e.g. on Linux, since these are not
114 supported by VxWorks. Instead, qmake will created partially linked
115 objects, that can be loaded at runtime with \c{ld}.
116
117 \o Creating static builds with \c{-static} is fully supported.
118
119 \o "Munching" (generating constructors/destructors for static C++
120 objects) is done automatically by a special qmake extension (for both
121 shared libraries and executables)
122
123 \o VxWorks does not have a file system layer, but the low level storage
124 drivers have to supply a file system like interface to the applications.
125 Since each driver implements a different subset of the functionality
126 supported by this interface, Qt's file system auto-tests show wildly
127 differing results running on different "file systems". The best results
128 can be achieved when running on a (writable) NFS mount, since that
129 provides the most Unix-ish interface. The worst results come from the
130 FTP file system driver, which may crash when accessed by a
131 \c{QFileInfo}.
132
133 \o Keep in mind that VxWorks doesn't call your \c{main()} function with
134 the standard \c{argc}/\c{argv} parameters. So either add a special
135 \c{vxmain()} function or use a tool like \c{callmain} to translate
136 VxWorks' commandline arguments to an \c{argc}/\c{argv} array.
137
138 \o Some example will fail to build, due to some missing dependencies
139 (e.g. shared memory) - this will be fixed in a later release.
140
141 \endlist
142*/
143
144/*!
145 \page platform-notes-qnx.html
146 \title Platform and Compiler Notes - QNX
147 \contentspage Platform and Compiler Notes
148 \target QNX
149
150 \note QNX is a community supported platform. See the
151 \l{Supported Platforms} page for more information.
152
153 This page contains information about the Qt for QNX port. More
154 information about the combinations of platforms and compilers supported
155 by Qt can be found on the \l{Supported Platforms} page.
156
157 Note that Qt for QNX is currently based on \l{Qt for Embedded Linux}, which
158 contains its own windowing system. Mixing QNX's Photon environment with
159 Qt for QNX is currently not possible. Building Qt for QNX with Photon's
160 X11 embedded server is not recommended due to missing support for X11 extensions,
161 resulting in poor rendering quality.
162
163 Qt for QNX contains experimental screen and input drivers based on QNX's
164 \c devi-hid and \c io-display. For more information, check the class documentation
165 for QQnxScreen, QWSQnxKeyboardHandler and QQnxMouseHandler. See the
166 \l{Porting Qt for Embedded Linux to a New Architecture} document for information
167 on how to add custom screen or input drivers.
168
169 \tableofcontents
170
171 \section1 Supported Versions
172
173 Qt has been tested on QNX 6.4 on i386 and PowerPC targets with QNX's default
174 gcc compiler.
175
176 \section1 Limitations
177
178 Some of Qt's functionality is currently not available on QNX:
179
180 \table
181 \header \o Function \o Notes
182 \row \o QProcess
183 \o Not available - QNX doesn't support mixing threads and processes.
184 \row \o QSharedMemory
185 \o Not available - QNX doesn't support SYSV style shared memory.
186 \row \o QSystemSemaphore
187 \o Not available - QNX doesn't support SYSV style system semaphores.
188 \row \o QWS Multi Process
189 \o QT_NO_QWS_MULTIPROCESS is always on due to missing shared memory support.
190 \row \o Phonon
191 \o There is no standard audio backend, which could be integrated into Phonon.
192 \row \o Qt3Support
193 \o The Qt3Support library is not available on QNX.
194 \endtable
195
196 \section1 Build Instructions
197
198 Qt for QNX needs to be built either on a QNX system, or \l{Cross-Compiling Qt
199 for Embedded Linux Applications}{cross-compiled} on a Linux host. In either
200 case, The QNX Software Development Platform must be installed.
201
202 Example configure line for cross-compiling Qt for QNX on a Linux host for an
203 i386 QNX target:
204
205 \code
206 configure -xplatform unsupported/qws/qnx-i386-g++ -embedded i386 -no-gfx-linuxfb -no-mouse-linuxtp -no-kbd-tty -no-qt3support -qt-gfx-qnx -qt-mouse-qnx -qt-kbd-qnx -no-exceptions
207 \endcode
208
209 \list
210 \o \c{-xplatform unsupported/qws/qnx-i386-g++} - selects the i386-g++ mkspec for QNX
211 \o \c{-embedded i386} - builds the embedded version of Qt and sets the architecture to i386
212 \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp} and \c{-no-kbd-tty} are Linux specific and won't work on QNX
213 \o \c{-no-qt3support} - required since the Qt3 support classes are not supported on QNX
214 \o \c{-no-exceptions} - reduces the size of the library by disabling exception support
215 \o \c{-qt-gfx-qnx} - enables the experimental \c{io-graphics} based display driver
216 \o \c{-qt-mouse-qnx} - enables the experimental \c{devi-hig} based mouse driver
217 \o \c{-qt-kbd-qnx} - enables the experimental \c{devi-hig} based keyboard driver
218 \endlist
219
220 \section1 General Notes
221
222 \list
223 \o To enable the experimental QNX display and input drivers, \c{io-display} needs to be
224 up and running. The \c devi-hid based Qt input drivers require \c devi-hid to run
225 in resource mode without Photon support. To enable a standard mouse and keyboard
226 combination, run \c devi-hid as follows: \c{/usr/photon/bin/devi-hid -Pr kbd mouse}.
227 Note that your current shell will not accept keyboard and mouse input anymore after
228 running that command, so run it either from a script that launches a Qt application
229 afterwards, or make sure to have remote login available to launch a Qt application.
230 In addition, the \c QWS_DISPLAY, \c QWS_MOUSE_PROTO and \c QWS_KEYBOARD environment
231 variables should all be set to \c{qnx} before running a Qt application.
232
233 \o The 3rd party TIFF library currently doesn't build due to the missing \c inflateSync
234 symbol from QNX's \c{libz.so.2}. Workarounds would be to manually replace QNX's libz
235 with a newer version, or disable the TIFF plugin entierly by appending
236 \c{QT_CONFIG += no-tiff} to \c{.qmake.cache} after configuring Qt.
237
238 \o Some of the tools, examples and demos do not compile due to dependencies on QProcess
239 or other classes that are not available on QNX.
240 \endlist
241
242 \section1 Platform Regressions
243
244 Qt for QNX's behavior is mostly identical with \l{Qt for Embedded Linux}. However,
245 some regressions were spotted in QDateTime computation around year 0 and year 1970,
246 which have been tracked back to faulty time zone data on some QNX versions.
247*/
Note: See TracBrowser for help on using the repository browser.