/[gnustep]/gnustep/core/make/Documentation/userfaq.texi
ViewVC logotype

Contents of /gnustep/core/make/Documentation/userfaq.texi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (show annotations) (download) (as text)
Fri Sep 26 02:17:43 2003 UTC (20 years, 8 months ago) by fedor
Branch: MAIN
Changes since 1.14: +20 -0 lines
File MIME type: application/x-texinfo
New faq

1 \input texinfo @c -*-texinfo-*-
2 @c A FAQ for GNUstep Users
3
4 @node Top, GNUstep General Information, (dir), (dir)
5 @chapter GNUstep Frequently Asked Questions for Users
6
7 Last updated @today{}.
8 Please send corrections to @email{gnustep-maintainer@@gnu.org}. Also look
9 at the (developer) FAQ for more developer oriented questions.
10
11 @menu
12 * GNUstep General Information::
13 * Compiling and Installing::
14 * Compatibility and Layout::
15 * Troubleshooting::
16 @end menu
17
18 @node GNUstep General Information, Compiling and Installing, Top, Top
19 @section GNUstep General Information
20
21 @menu
22 * What is GNUstep?::
23 * What is the OpenStep standard?::
24 * What platforms does GNUstep run on?::
25 * Does GNUstep run on Windows?::
26 * What is GNUstep's position towards KDE and the GNOME project?::
27 * Which Foundation Library can I use?::
28 * How can I get GNUstep?::
29 * How do you run GNUstep?::
30 * Is there a web site?::
31 * When is GNUstep intended to be available?::
32 * What is usable?::
33 @end menu
34
35 @node What is GNUstep?, What is the OpenStep standard?, GNUstep General Information, GNUstep General Information
36 @subsection What is GNUstep?
37
38 GNUstep is the Free Software Foundation's effort to implement NeXT
39 Software Inc.'s (now Apple Inc.) OpenStep Standard. The project is not
40 finished, so some parts are not as polished as they could be.
41
42 @node What is the OpenStep standard?, What platforms does GNUstep run on?, What is GNUstep?, GNUstep General Information
43 @subsection What is the OpenStep standard?
44
45 OpenStep is an Application Programming Interface (API) for creating
46 applications using the Objective C language. It was published by NeXT
47 Computer Inc. in 1994.
48
49 OpenStep consists of three parts: the @samp{FoundationKit}, a library of
50 non-graphical objects; the @samp{AppKit}, a library of objects useful in
51 creating graphical applications; and @samp{Display Postscript}, an
52 interface for drawing to the screen using the PostScript graphics
53 language.
54
55 You can obtain a copy of the OpenStep standard from the GNUstep web site
56 @url{http://www.gnustep.org} or it's mirror sites.
57
58 @node What platforms does GNUstep run on?, Does GNUstep run on Windows?, What is the OpenStep standard?, GNUstep General Information
59 @subsection What platforms does GNUstep run on?
60
61 See the list of supported platforms at
62 @url{http://www.gnustep.org/information/machines_toc.html} for
63 information on what machines GNUstep builds on and what the status of
64 the ports is. Probably a few days porting to any other Unix system where
65 current gcc/egcs compilers and gdb debugger work.
66
67 @node Does GNUstep run on Windows?, What is GNUstep's position towards KDE and the GNOME project?, What platforms does GNUstep run on?, GNUstep General Information
68 @subsection Does GNUstep run on Windows?
69
70 The primary targets for GNUstep are free 'Unix' platforms such
71 as GNU/Linux.
72
73 That being said, the base library should run on Windows-NT,98 with the
74 Cygwin unix emulation library from Cygnus
75 (http://sourceware.cygnus.com/cygwin/) or the MinGW libraries. At
76 present there are a few problems with networking (Distributed Objects)
77 support, but the library is believed to work.
78
79 The gui library needs a win32 backend library to work under
80 Windows-NT. The backend library is a thin layer that converts the
81 GNUstep methods to handle drawing of GUI elements to calls to the
82 win32 API. This is a project is in an alpha state.
83
84 The application-wrapper used for GNUstep already allows for multiple
85 binaries to be stored for different systems, so you should be able
86 to write once, deploy anywhere.
87
88
89 @node What is GNUstep's position towards KDE and the GNOME project?, Which Foundation Library can I use?, Does GNUstep run on Windows?, GNUstep General Information
90 @subsection What is GNUstep's position towards KDE and the GNOME project?
91
92 You can use GNUstep with GNOME and/or KDE. GNUstep displays
93 on top of X11. You can still do programming in C (since Objective-C
94 is just a super-set of C), and when (if?) GCC gets around to it,
95 you'll be able to mix C++ and Objective-C code in the SAME file.
96
97 GNUstep, is much more than a window manager or desktop environment.
98 It frees you to develop cross-platform applications without the
99 work of developing an OS independent framework from scratch. It
100 gives you lots of basic functionality, from Font Panels to Unicode
101 strings to Distributed Objects.
102
103 @node Which Foundation Library can I use?, How can I get GNUstep?, What is GNUstep's position towards KDE and the GNOME project?, GNUstep General Information
104 @subsection Which Foundation Library can I use?
105
106 That depends ...
107
108 If you only want to use the database package - gnustep-db, you can
109 use either the gnustep base library or libFoundation.
110
111 If you want to develop/use GNUstep gui applications, you must use
112 the gnustep-base library since libFoundation is (13-Feb-2000)
113 missing much essential functionality.
114
115
116 @node How can I get GNUstep?, How do you run GNUstep?, Which Foundation Library can I use?, GNUstep General Information
117 @subsection How can I get GNUstep?
118
119 Get the HOWTO from
120 @url{http://www.gnustep.org/resources/documentation/GNUstep-HOWTO}
121 Get the latest release from @url{ftp://ftp.gnustep.org}. If you're
122 really adventurous, get the latest snapshot by anonymous ftp from
123 @url{ftp://ftp.gnustep.org:/pub/daily-snapshots}
124
125 Use anonymous CVS to keep up to date - instructions are in the
126 HOWTO.
127
128 @node How do you run GNUstep?, Is there a web site?, How can I get GNUstep?, GNUstep General Information
129 @subsection How do you run GNUstep?
130
131 You are presumably under the misapprehension that GNUstep is
132 some sort of program or window manager.
133
134 It isn't.
135
136 GNUstep is a whole load of things - primarily a set of libraries
137 for developing software.
138
139 At present, it's those libraries, plus various command-line based
140 support tools and service providing daemons, plus various GUI
141 development tools, a GUI desktop/workspace application, etc.
142
143 At no stage will you ever 'run' GNUstep - you will run applications
144 and tools and will make use of it's services. At some point
145 you may well find packages distributed as 'GNUstep' systems in the
146 way that you get 'GNU/Linux' systems packaged today. Look at
147 Simply GNUstep @url{http://simplygnustep.sourceforge.net/} for instance.
148
149 If you want to see a sample GUI application running you need to build
150 GNUstep and look at the example applications in the gnustep-examples
151 package. Build 'Finger' or 'Ink' and start it with 'openapp Finger.app'
152 or 'openapp Ink.app'
153
154 To look best - use WindowMaker (the currently preferred GNUstep
155 window manager) as your window manager.
156
157 @node Is there a web site?, When is GNUstep intended to be available?, How do you run GNUstep?, GNUstep General Information
158 @subsection Is there a web site?
159
160 See @url{http://www.gnustep.org/}.
161
162 @node When is GNUstep intended to be available?, What is usable?, Is there a web site?, GNUstep General Information
163 @subsection When is GNUstep intended to be available?
164
165 It's usable now. Major releases are made about every six months. However, if
166 you are a serious developer, it's probably best to use the latest
167 snapshots.
168
169 @node What is usable?, , When is GNUstep intended to be available?, GNUstep General Information
170 @subsection What is usable?
171
172 @itemize @bullet
173 @item gnustep-make does pretty much what the makefiles in NeXTstep do.
174 @item gnustep-base (Foundation) stuff should work fine for almost all projects.
175 @item gnustep-db is only EOF-1.0 compatible but should work OK.
176 @item gnustep-gui (AppKit) has a lot working but there is still stuff missing.
177 @item DGS (Display Ghostscript) is usable but slow.
178 @end itemize
179
180 What does this mean for users? Many applications will run quite well.
181 Applications that require very complex drawing and some unusual features may
182 not.
183
184 @c ****************************************************************
185 @node Compiling and Installing, Compatibility and Layout, GNUstep General Information, Top
186 @section Compiling and Installing
187
188 @menu
189 * How do I compile GNUstep on my machine? ::
190 * Are there any precompiled packages available?::
191 * What are these type and size warnings?::
192 * What are these import warnings?::
193 @end menu
194
195 @node How do I compile GNUstep on my machine? , Are there any precompiled packages available?, Compiling and Installing, Compiling and Installing
196 @subsection How do I compile GNUstep on my machine?
197
198 Read the file @file{GNUstep-HOWTO}, which comes with the GNUstep
199 distribution (gnustep-make), and also is available separately on the
200 GNUstep web site.
201
202 @node Are there any precompiled packages available?, What are these type and size warnings?, How do I compile GNUstep on my machine? , Compiling and Installing
203 @subsection Are there any precompiled packages available?
204
205 Check @url{http://www.gnustep.org/resources/sources.html} for links to
206 RPMS. Debian packages are also available. You can check the debian
207 site(s) for preconfigured GNUstep packages. Also check the BSD sites for
208 GNUstep ports.
209
210 @node What are these type and size warnings?, What are these import warnings?, Are there any precompiled packages available?, Compiling and Installing
211 @subsection What are these type and size warnings?
212
213 These warnings:
214 @example
215 /usr/bin/ld: warning: type and size of dynamic symbol
216 `__objc_class_name_NSConstantString' are not defined
217 @end example
218
219 are a common occurence and are due to a mismatch between gcc and
220 ld. They don't do any harm so they can be safely ignored. They have been
221 fixed in GCC version 3.1.
222
223 @node What are these import warnings?, , What are these type and size warnings?, Compiling and Installing
224 @subsection What are these import warnings?
225
226 Do you get these obnoxious warning whenever you compile an application, tool,
227 or Objective-C program:
228
229 @example
230 warning: using `#import' is not recommended
231 [...]
232 @end example
233
234 This is quite annoying for many people, particularly since almost any
235 book on Objective-C you read recommends using #import instead of
236 #include. If you are wondering why #import is deprecated, please
237 search the web and the GCC and GNUstep mailing list archives - there
238 are very precise and sound technical reasons.
239 Due to these problems, the gcc maintainers are seriously considering
240 removing support for #import altogether in the next release.
241
242 If you still like to use #import, you can get rid of these warnings when
243 you configure gnustep-make, with
244
245 @example
246 ./configure --enable-import
247 @end example
248
249 But beware, this may not even work on future versions of the gcc compiler.
250
251
252 @c ****************************************************************
253 @node Compatibility and Layout, Troubleshooting, Compiling and Installing, Top
254 @section Compatibility and Layout
255
256 @menu
257 * Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?::
258 * Is GNUstep following Changes to OpenStep and MacOSX?::
259 * Do we have to have the NeXTstep look and feel?::
260 * What's up with the directory structure?::
261 * Why not use Frameworks?::
262 @end menu
263
264 @node Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?, Is GNUstep following Changes to OpenStep and MacOSX?, Compatibility and Layout, Compatibility and Layout
265 @subsection Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?
266
267 You can't run these programs on GNUstep, but if you have the source
268 code for the programs, you should be able to port them to GNUstep and
269 compile them. Whether or not you will be able to run them depends on how
270 complete GNUstep is at the time.
271
272 @node Is GNUstep following Changes to OpenStep and MacOSX?, Do we have to have the NeXTstep look and feel?, Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?, Compatibility and Layout
273 @subsection Is GNUstep following Changes to OpenStep and MacOSX?
274
275 Yes, gnustep-base already contains the documented changes in the
276 Foundation library. GNUstep aims to be compatible with both the
277 OpenStep specification and with MacOS-X. It should be easy to write
278 an application that compiles cleanly under both GNUstep and Cocoa.
279
280 @node Do we have to have the NeXTstep look and feel?, What's up with the directory structure?, Is GNUstep following Changes to OpenStep and MacOSX?, Compatibility and Layout
281 @subsection Do we have to have the NeXTstep look and feel?
282
283 GNUstep is aiming for something like the NeXTstep-3.3 look and feel.
284 Although we don't want to force anyone into this, a lot of the power and
285 ease of use comes from this feel. The look of GNUstep is something
286 different - buttons and other widgets can look different but still act
287 the same way. We hope to implement themes which will allow
288 this. Actually we're hoping someone will volunteer to do it.
289
290 @node What's up with the directory structure?, Why not use Frameworks?, Do we have to have the NeXTstep look and feel?, Compatibility and Layout
291 @subsection What's up with the directory structure?
292
293 First of all, GNUstep uses a slightly different directory structure than
294 NeXT or MacOSX. Part of this is historical, part is because we can't do
295 things the same way (see @pxref{Why not use Frameworks?}).
296
297 GNUstep also stores libraries and binaries in subdirectories based on
298 the operating system and cpu. This is so you can compile and store
299 binaries for different systems in the same directory structure. MacOSX
300 uses Fat binaries to accomplish this (another reason we do it
301 differently). If you want, you can get rid of this using the
302 @samp{--enable-flattened} option to the gnustep-make package.
303
304 @node Why not use Frameworks?, , What's up with the directory structure?, Compatibility and Layout
305 @subsection Why not use Frameworks?
306
307 Frameworks are much more difficult to port and to use, and are very
308 unnatural on a unix system - extremely unnatural on Windows. In a
309 framework, the shared dynamic library is inside a framework wrapper
310 directory. Because of this, the dynamic linker can't find it.
311
312 We have frameworks, so how do we work around that? Well, we build dynamic
313 links from a directory inside the dynamic linker path into the framework,
314 which work, but then you can't move the framework anywhere else on
315 the system, otherwise you break the link, and nothing will find the
316 framework any longer!
317
318 On systems without dynamic links, like Windows, we can't even do this!
319 We have to copy the library from the framework into the dynamic linker
320 path, but that is simply a shared library then! Absolutely @emph{no}
321 difference. You put the dynamic library in a system directory in the
322 dynamic linker path, and associate with that library a resource directory.
323
324 I think OpenStep for Windows did that, and still called them frameworks.
325 Oh well we can do the same then, and call our libraries frameworks.
326
327 In a shared library, the shared dynamic library is in a directory which is
328 in the path to the dynamic linker. the dynamic linker can find it very
329 easily. this is how all shared and static libraries work on Unix systems,
330 on Windows systems and possibly on most system at all.
331
332 Moreover, the OpenStep API requires us to provide some stuff for
333 frameworks, like creating and registering automatically a framework
334 object each time a framework is used (linked at runtime, or linked into
335 the app), and attaching to it the list of classes inside the framework -
336 which are not particularly trivial to implement - they depend on playing
337 with the linker and the object file format - and might produce troubles
338 when porting. And we never use these facilities.
339
340 For Apple MacOSX sure it's easier. They can modify
341 the system linker, compiler, the system dynamical linker. They
342 always know on which platform they are working (their own), etc. They can
343 modify the system to support frameworks natively. Easy that way.
344
345 But GNUstep is meant to run on many different platforms, platforms which
346 we don't control (Windows, Sun Solaris, Darwin, GNU/Linux, Unix
347 variants) and which have different linkers and do not support frameworks
348 natively. On some systems it's difficult to just load a bundle or
349 compile a shared library!
350
351 So building the core libraries as 'libraries' means that it's much
352 easier to port them, and it's much more difficult to break them.
353
354 Sure, frameworks have a bundle of resources associated with it - but we
355 can very easily associate a bundle of resource with a shared library, no
356 reason why not. We are doing it.
357
358 So please note that GNUstep libraries are meant to be much similar to
359 MacOS X frameworks. They are composed of a shared library and
360 associated with a bundle of resources. There is a difference in
361 terminology, in where the resources are installed, and possibly a slight
362 difference in the NSBundle API to get to the resource bundle (anyway,
363 it's a one line difference between MacOSX and GNUstep, so it looks like
364 very easy to #ifdef).
365
366 In other words, GNUstep libraries are meant to basically do the same as
367 frameworks do on MacOSX, but to be portable to strange platforms (such as
368 Windows).
369
370
371 @c ****************************************************************
372 @node Troubleshooting, , Compatibility and Layout, Top
373 @section Troubleshooting
374
375 @menu
376 * Problems compiling (loading shared libs)::
377 * Problems compiling (GNUstep Internal Error)::
378 * Problems with Alt key::
379 * Problems with gcc3::
380 * Problems with fonts::
381 @end menu
382
383 @node Problems compiling (loading shared libs), Problems compiling (GNUstep Internal Error), Troubleshooting, Troubleshooting
384 @subsection Problems compiling (loading shared libs)
385
386 If you get something like
387
388 @example
389 plmerge: error while loading shared libraries:
390 libgnustep-base.so.1: cannot open shared object file: No such file or directory
391 @end example
392
393 or this:
394
395 @example
396 Making all for service example...
397 make[2]: *** [example.service/Resources/Info-gnustep.plist] Error 1
398 make[1]: *** [example.all.service.variables] Error 2
399 make[1]: Leaving directory `/home/multix/gnustep-gui-0.8.6/Tools'
400 make: *** [internal-all] Error 2
401 @end example
402
403 This means your GNU make is broken on your system. Try this:
404
405 @example
406 make LD_LIBRARY_PATH=$LD_LIBRARY_PATH
407 @end example
408
409 You could also be having problems with gcc. gcc 2.96 does not work
410 (Mandrake 8.1, perhaps others). Use a different compiler, like gcc 3.x.
411
412 @node Problems compiling (GNUstep Internal Error), Problems with Alt key, Problems compiling (loading shared libs), Troubleshooting
413 @subsection Problems compiling (GNUstep Internal Error)
414
415 If you get
416
417 @example
418 GNUSTEP Internal Error:
419 The private GNUstep function to establish the argv and environment
420 variables was not called.
421 Please report the error to bug-gnustep@@gnu.org.
422 @end example
423
424 when compiling the gui library, there could be several things wrong. One
425 is that you installed the gnustep-objc library, but the compiler
426 found another Objecive-C library (like the one that came with gcc). If
427 you are using gcc 3.x, DO NOT use the gnustep-objc library.
428
429 @node Problems with Alt key, Problems with gcc3, Problems compiling (GNUstep Internal Error), Troubleshooting
430 @subsection Problems with Alt key
431
432 It's possible the Alt key is not where you think it is or is defined
433 incorrectly. Try running the GSTest application, KeyboardInput test
434 (located in the examples package
435 at @url{ftp://ftp.gnustep.org/pub/gnustep/core}) to test it.
436 See
437 @url{http://www.gnustep.org/resources/documentation/gnustep-gui_6.html#SEC43}
438 for information on how to change the settings.
439
440 If you are using WindowMaker, it's possible it is grabing this key and
441 using it for itself. To check, open Window Maker's WPrefs and go to the
442 Mouse Preferences. Then use another value for the "Mouse grab modifier"
443 (bottom right). That will allow you to alt-drag things.
444
445 @node Problems with gcc3, Problems with fonts, Problems with Alt key, Troubleshooting
446 @subsection Problems with gcc3
447
448 Don't forget you need to update binutils and libc also.
449
450 @node Problems with fonts, , Problems with gcc3, Troubleshooting
451 @subsection Problems with fonts
452
453 Why do the characters get changed to asterisks ('*')?
454
455 The problem you are getting come from the fact that the xlib backend
456 (when not using Xft) will only use one fixed X font for a given
457 font name. If the font "helvetica" is used inside of GNUstep the
458 one selected X font, in your case
459 "-*-helvetica-medium-r-normal--12-*-*-*-p-*-iso8859-1" is used. So
460 only characters (or glyphs) that are available in that font can be
461 displayed. The selection of which font name to use happens inside the
462 font_cacher and is more or less at random (the order fonts are
463 listed by the X system).
464
465 You can influence the fonts that are available by setting:
466
467 @example
468 defaults write NSGlobalDomain GSFontMask "*iso8859-13"
469 font_cacher
470 @end example
471
472 (or using a different character set, like iso8859-2). This is really a
473 bug in GNUstep, but it hasn't been fixed yet.
474
475 The other option is the use the art backend, which handles fonts much
476 better. When compiling gnustep-back, start with
477
478 @example
479 ./configure --enable-graphics=art
480 @end example
481
482 @node No Makefile, , Problems with gcc3, Troubleshooting
483 @subsection No Makefile
484
485 I tried to compile something and I get:
486
487 @example
488 GNUmakefile:27: /Makefiles/common.make: No such file or directory
489 GNUmakefile:39: /Makefiles/aggregate.make: No such file or directory
490 gmake: *** No rule to make target `/Makefiles/aggregate.make'. Stop.
491 @end example
492
493 Make sure you have installed the gnustep-make package and also type:
494
495 @example
496 source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
497 @end example
498
499 You can put this line in your @file{.profile} or @file{.bash_profile} file
500 so that it is done automatically when you log in.
501
502 @bye
503 \bye

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26