home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / os / os2 / programm / 6358 < prev    next >
Encoding:
Internet Message Format  |  1992-11-11  |  24.7 KB

  1. Path: sparky!uunet!zaphod.mps.ohio-state.edu!usc!elroy.jpl.nasa.gov!nntp-server.caltech.edu!brooke
  2. From: brooke@cco.caltech.edu (Brooke Paul Anderson)
  3. Newsgroups: comp.os.os2.programmer
  4. Subject: How to get/install/use the emx-0.8e port of GNU C/C++
  5. Date: 12 Nov 1992 09:22:13 GMT
  6. Organization: California Institute of Technology, Pasadena
  7. Lines: 560
  8. Message-ID: <1dt7o5INNcag@gap.caltech.edu>
  9. NNTP-Posting-Host: sandman.caltech.edu
  10.  
  11. Here's the latest version of the document:
  12.  
  13.  
  14. A FREE GNU C AND C++ SOFTWARE-DEVELOPMENT SYSTEM FOR OS/2 V2.0
  15.  
  16. by Brooke P. Anderson, 11/12/92
  17.  
  18. Brooke Anderson
  19. 1155 E. Del Mar #312
  20. Pasadena, CA  91106
  21. USA
  22. Phone:  (818) 577-7555
  23. GEnie:  BROOKE
  24. Internet:  brooke@hope.caltech.edu
  25.  
  26. TABLE OF CONTENTS
  27.  
  28. 1.0 Introduction
  29. 2.0 How to get it
  30. 3.0 How to install it
  31.      3.1 Unz50x32.exe
  32.      3.2 Wholeinf.zip
  33.      3.3 Gnumk362.zip
  34.      3.4 Emxdev.zip, gnudev.zip, and gppdev.zip
  35.      3.5 The final steps
  36. 4.0 How to use it
  37.      4.1 Using info
  38.      4.2 Using the compiler
  39.      4.3 Using the debugger
  40.      4.4 Using make
  41. 5.0 Where to get more information
  42. 6.0 Conclusions
  43.  
  44. Appendix 1:  Optional packages
  45. Appendix 2:  Sources of distribution
  46.  
  47. 1.0 INTRODUCTION
  48.  
  49. This document describes a free GNU C and C++ software-development
  50. system for OS/2 v2.0.  It tells you how to acquire all the
  51. necessary software, how to install it, how to start using it, and
  52. where to look for more information.
  53.  
  54. The GNU software-development system includes a C and C++
  55. compiler, a debugger, an assembler, a make utility (for
  56. automating the compilation of programs made of many source
  57. files), and a hypertext reader (for reading the documentation). 
  58. The compiler generates full 32-bit, optimized code, and it
  59. supports almost all of the 32-bit OS/2 API calls, so you software
  60. developers out there can use it for PM programming, manipulating
  61. semaphores, manipulating threads, using named pipes, etc. 
  62. Optional packages include curses (a standard library for
  63. manipulating screenfuls of text and for moving the cursor), emacs
  64. (a programmer's editor), a package for accessing 16-bit API
  65. calls, and full source code for the system.
  66.  
  67. GNU software is originally developed by the Free Software
  68. Foundation, an organization which produces a lot of free software
  69. for UNIX.  After the Free Software Foundation releases the UNIX
  70. versions, people often port them to many other operation systems
  71. (such as OS/2).  Despite the fact that the software is free, the
  72. UNIX community considers it a standard and often prefers it over
  73. other products because of its high quality.  The compilers, for
  74. example, produce well-optimized code; and emacs is one of the two
  75. most popular editors for UNIX.
  76.  
  77. Sometimes, there is more than one port of a GNU program.  For
  78. OS/2, for example, there are two different ports of the GNU C
  79. compiler (called "gcc").  This document discusses only one of
  80. them (the EMX port) since the EMX port provides faster floating
  81. point routines and since it works with a debugger.  This document
  82. deals with version 0.8e of the EMX port, which is the latest
  83. version.  People frequently produce new versions of and
  84. enhancements for the GNU software and the ports based on it.
  85.  
  86. IMPORTANT:  I have not tested the software on FAT file systems. 
  87. I think it will work, but I have not checked all of the file
  88. names to make sure they comply with the egregious 8.3 file-naming
  89. convention.
  90.  
  91. 2.0 HOW TO GET IT
  92.  
  93. The full software-development system (and the various optional
  94. packages described in Appendix 1) are available from a variety of
  95. sources.  If you have access to Internet, you can get the files
  96. from anonymous-ftp sites.  In the USA, the main anonymous-ftp
  97. site for OS/2 is ftp-os2.nmsu.edu.  In Germany, the main
  98. anonymous-ftp site for OS/2 is rusinfo.rus.uni-stuttgart.de.  The
  99. files are also available on GEnie, and they might be available on
  100. CompuServe and many other on-line services.  Also, see Appendix 3
  101. for a list of people who are willing to distribute the whole
  102. system through regular mail.
  103.  
  104. You need to obtain the files "emxdev.zip" (which contains
  105. auxiliary programs), "gnudev.zip" (which contains the compiler,
  106. the debugger, the assembler, and more auxiliary programs),
  107. "gppdev.zip" (which contains files for the C++ compiler),
  108. "gnumk362.zip" (which contains make), "wholeinf.zip" (which
  109. contains a hypertext reader and all the documentation for the
  110. compiler, the debugger, and make), and "unz50x32.exe" (a
  111. self-extracting archive which contains unzip v5.0).  See Appendix
  112. 1 for a description of what you need for the optional packages. 
  113. In case you need to tell someone how to find this file, is is in
  114. "emxstart.zip".
  115.  
  116. The sizes of the various files are:  600k for emxdev.zip, 843k
  117. for gnudev.zip, 1085k for gppdev.zip, 139k for gnumk362.zip, 623k
  118. for wholeinf.zip, 114k for unz50x32.exe, and 10k for
  119. emxstart.zip.
  120.  
  121. On GEnie, all the archives are (or soon will be) in the OS/2
  122. library (library 13) of the IBMPC round table.  On
  123. ftp-os2.nmsu.edu, unz50x32.exe is in pub/os2/2.0/archivers;
  124. gnumk362.zip is in pub/os2/2.0/programming; wholeinf.zip is in
  125. pub/os2/2.0/programming/emx-0.8e/contrib; emxstart.zip is
  126. currently in pub/uploads (but will be moving elsewhere shortly,
  127. probably to pub/os2/2.0/programming/emx-0.8e or
  128. pub/os2/2.0/programming/emx-0.8e/contrib); and the rest of the
  129. files are in pub/os2/2.0/programming/emx-0.8e.  On
  130. rusinfo.rus.uni-stuttgart.de, check in pub/os2/emx-0.8e and other
  131. likely directories (such as those called "gnu").
  132.  
  133. 3.0 HOW TO INSTALL IT
  134.  
  135. The following subsections describe how to install the various
  136. pieces of the GNU C and C++ software-development system.  Go
  137. through the procedures step by step as described -- the order is
  138. important.  Don't feel compelled to read through any of the
  139. readme files or other documentation spit out during the
  140. unarchiving process -- I think you will have a much easier time
  141. if you go through this document beforehand.
  142.  
  143. 3.1 UNZ50X32.EXE
  144.  
  145. You will need unzip v5.0 to unarchive the files.  Earlier
  146. versions of unzip (including PKZip versions earlier than 1.9)
  147. will not work.
  148.  
  149. To unarchive unz50x32.exe, you simply move it to a convenient
  150. directory and type "unz50x32".  Add the name of the directory
  151. unzip is in to your path.  For example, I have unzip in
  152. c:\apps\unzip, so I appended "c:\apps\unzip;" to the "SET PATH"
  153. statement in my config.sys file.  Then reboot.  Now, you can
  154. unarchive any zip archive by typing "unzip filename", where
  155. "filename.zip" is the name of the archive.
  156.  
  157. 3.2 WHOLEINF.ZIP
  158.  
  159. Copy wholeinf.zip to any convenient directory and unarchive it. 
  160. It will disgorge a program called "info.exe" (the hypertext
  161. reader), several auxiliary files, and a bunch of documentation
  162. files for itself, the compiler, the debugger, and make.
  163.  
  164. 3.3 GNUMK362.ZIP
  165.  
  166. Copy gnumk362.zip to any convenient directory and unarchive it. 
  167. The archive will disgorge several files, including info files. 
  168. You can delete the info directory as its contents are duplicated
  169. in wholeinf.zip.
  170.  
  171. Add the name of the directory make is in to your path statement
  172. in config.sys.  (I have make in c:\apps\make, so I appended
  173. "c:\apps\make;" to the "SET PATH" statement in my config.sys.)
  174.  
  175. 3.4 GNUDEV.ZIP, EMXDEV.ZIP, AND GPPDEV.ZIP
  176.  
  177. These archives create the directory ".\emx" and a bunch of
  178. directories under that.  Thus, unarchive the files from the
  179. directory in which you want this emx directory.  (In other words,
  180. if you unarchive gnudev.zip in the directory "\apps", the process
  181. will create \apps\emx, \apps\emx\bin, \apps\emx\lib, and many
  182. other such directories.)
  183.  
  184. 3.5 THE FINAL STEPS
  185.  
  186. Now, you need to modify your config.sys file.  The examples below
  187. are from my config.sys file, and I have the emx directory
  188. installed under c:\apps.  Thus, my system has the directories
  189. "c:\apps\emx\dll", "c:\apps\emx\lib", "c:\apps\emx\include",
  190. "c:\apps\emx\bin", and so on -- you will need to modify the
  191. following examples so that the directories are specified
  192. correctly.  
  193.  
  194. First, you need to specify in your libpath the location of
  195. emx.dll and other dll files.  In my config.sys, I have
  196.  
  197. LIBPATH=.;C:\OS2\DLL;C:\OS2\MDOS;C:\;C:\OS2\APPS\DLL;c:\apps\emx\dll;
  198.  
  199. Second, add the name of the emx\bin directory to your path
  200. statement in config.sys.  (I appended "c:\apps\emx\bin;" to the
  201. "SET PATH" statement in my config.sys.)
  202.  
  203. Third, you need to set a few environmental variables so that the
  204. compiler knows where to find and how to use various files:
  205.  
  206. set C_INCLUDE_PATH=c:/apps/emx/include
  207. set LIBRARY_PATH=c:/apps/emx/lib
  208. set CPLUS_INCLUDE_PATH=C:/apps/emx/include.cpp;C:/apps/emx/include
  209. set TERM=mono
  210. set TERMCAP=c:/apps/emx/etc/termcap.dat
  211.  
  212. IMPORTANT:  you need to use forward slashes ("/") and not
  213. backward slashes ("\") when setting these environmental
  214. variables.  However, do NOT use forward slashes in your libpath
  215. statement.
  216.  
  217. Now, reboot your machine so that these definitions take effect. 
  218. This completes the installation process.
  219.  
  220. 4.0 HOW TO USE IT
  221.  
  222. Now, you are ready to use info (the hypertext reader), to compile
  223. programs, to debug programs, and to use make.  The next
  224. subsections discuss each of these actions in turn.
  225.  
  226. 4.1 USING INFO
  227.  
  228. Go into the directory in which info.exe resides.  Type "info". 
  229. You are now looking at a screen that has some information on the
  230. top half (information such as "Typing 'd' returns here, 'q'
  231. quits, '?' lists all info commands, 'h' gives a primer for
  232. first-timers . . .") and a list of subjects near the bottom
  233. (subjects such as "Info", "Make," "Gcc", "Gdb", etc.).  
  234.  
  235. Go ahead and type "h" for a tutorial.  The most basic functions
  236. to remember are:  type "q" to quit, type "?" to get a list of
  237. commands, hit the space bar or PgDn key to go down a page, press
  238. the Del key or the PgUp key to go up a page, press "n" to go to
  239. the next node (think of a node as being a collection of one or
  240. more pages dealing with a single topic), press "p" to go to the
  241. previous node, use the up and down arrow keys to highlight
  242. choices of new nodes to jump to, and press enter to jump to the
  243. highlighted node.
  244.  
  245. Just play around with it a little while, and you will get the
  246. hang of it.  Type "d" to get back to the main directory, use the
  247. down arrow to highlight "Gcc", press enter, press the down arrow
  248. to highlight "Contributors", press enter, scan through the pages
  249. of text by hitting the PgDn key a couple of times, type "?" to
  250. see a list of commands, type "p" a couple of times, etc.
  251.  
  252. 4.2 USING THE COMPILER
  253.  
  254. To compile a C source file called "myprog.c", type "gcc -o
  255. myprog.exe myprog.c".  The -o switch tells gcc that it should
  256. call the resulting executable "myprog.exe".  To compile the C++
  257. source file "myprog.cc", type "gcc -o myprog.exe myprog.cc
  258. -lgpp".  C++ source files should have the extension ".cc".  The
  259. -lgpp switch tells gcc to link the C++ libraries.  You can also
  260. tell gcc to optimize your code by using the -O switch.  There are
  261. two levels of optimization (-O and -O2, the highest being -O2). 
  262. Thus, for the fastest-executing code (at the expense of time to
  263. compile and of size of the executable), you would type "gcc -O2
  264. -o myprog.exe myprog.c" for myprog.c and "gcc -O2 -o myprog.exe
  265. myprog.cc -lgpp" for myprog.cc.
  266.  
  267. Note:  Specifying "-o myprog.exe" is important.  If you don't
  268. specify ".exe" as the suffix of the output file name, the
  269. compiler will generate a UNIX-style executable which will not run
  270. under OS/2 even if you subsequently rename the file so that it
  271. has a .exe extension.
  272.  
  273. 4.3 USING THE DEBUGGER
  274.  
  275. To debug a program, you need to compile it with the -g switch: 
  276. "gcc -g -o myprog.exe myprog.c" for myprog.c and likewise for
  277. myprog.cc.  After compiling, you then type "gdb myprog.exe" to
  278. start the debugger.  Type "h" at the debugger prompt to get a
  279. list of help topics.  gdb supports all sorts of breakpoints
  280. (including conditional ones), and you can watch variables, set
  281. variables to different values, etc.  For example, to get help on
  282. running programs from within the gdb, you can type "help
  283. running".  That will give you a list of commands such as run,
  284. kill, step, etc.  You can get help on individual commands by
  285. typing, for example, "help step".
  286.  
  287. The following is a sample compile and debug session.  Go into the
  288. emx\test directory and type "gcc -g -o hello.exe hello.cc -lgpp"
  289. to compile hello.cc.  Type "hello" to run it, to see if the
  290. compiler is functioning.  The program will print "Hello, world!"
  291. on the screen.  Now type "gdb hello.exe" to start gdb.  At the
  292. prompt "(gdb)", type "list main" to list the function "main". 
  293. Then type "break 5" to cause execution to stop at line 5 in the
  294. main function.  Type "run" to start execution -- it will stop at
  295. line 5.  Type "print argc" to see the value of the variable
  296. "argc".  Type "step" to run line 5 then halt execution at the
  297. next line.  Type "quit" to quit.  To list a function (main(),
  298. say) that is longer than a screenful, type "list main"; then type
  299. "list" again to list the next screenful of main.
  300.  
  301. You can run the debugger interactively from within emacs, too. 
  302. This arrangement provides a more visual system similar to
  303. MicroSoft's CodeView or Borland's Integrated Development
  304. Environment.  See Appendix 1 for details.
  305.  
  306. 4.4 USING MAKE
  307.  
  308. Assume you have a program made of the following source files: 
  309. "myprog1.c" and "myprog2.c".  You might manually compile these
  310. files by typing "gcc -o myprog.exe myprog1.c myprog2.c".  Of
  311. course, if you change only one of the files, typing such a
  312. command causes the recompiling of both source files.  During
  313. development, this could be tiresome if the files take a long time
  314. to compile.  A better way would be to type "gcc -c myprog1.c"
  315. which compiles myprog1.c into the object file "myprog1.o" (the -c
  316. switch tells gcc to make an object file), then to type "gcc -c
  317. myprog2.c" to generate myprog2.o, and finally to type "gcc -o
  318. myprog.exe myprog1.o myprog2.o".  This way, if you change only
  319. myprog1.c, you can recompile it and relink it with myprog2.o to
  320. create myprog.exe (skipping the "gcc -c myprog2.c" step).  This
  321. will be much faster if the source files take a long time to
  322. compile (or if you have a lot of source files).
  323.  
  324. Of course, doing all this typing is tiresome, too.  Also, if
  325. myprog1.c happens to depend on myprog1.h, and you change
  326. myprog1.h, you must recompile myprog1.c.  Thus, you have to keep
  327. track of all the file dependencies in order to know, after
  328. changing one header file, which other files need to be
  329. recompiled.
  330.  
  331. Fortunately, make takes care of all of this automatically.  All
  332. you have to do is create one text file that describes the various
  333. dependencies and the various steps to compile the program.  You
  334. name the text file "Makefile".  From then on, whenever you type
  335. "make", make examines the Makefile, looks for files which have
  336. changed since the last compile, recompiles any files which depend
  337. on the changed files, and relinks everything into a new
  338. executable.
  339.  
  340. For example, suppose that myprog.exe is made from myprog1.c and
  341. myprog2.c, that myprog1.c contains the lines "#include
  342. "myprog1.c"" and "#include "mainhead.h"", and that myprog2.c
  343. includes myprog2.h and mainhead.h.  The Makefile describing all
  344. of this is
  345.  
  346. myprog.exe: myprog1.o myprog2.o
  347.      gcc -o myprog.exe myprog1.o myprog2.o
  348.  
  349. myprog1.o: myprog1.c myprog1.h mainhead.h
  350.      gcc -c myprog1.c
  351.  
  352. myprog2.o: myprog2.c myprog2.h mainhead.h
  353.      gcc -c myprog2.c
  354.  
  355. The first line shows that myprog.exe depends on myprog1.o and
  356. myprog2.o.  If either of those has changed since the last time
  357. make was invoked, make will relink them to create myprog.exe by
  358. giving the command under the first line.  The fourth line shows
  359. that myprog1.o depends on myprog1.c, myprog1.h, and mainhead.h. 
  360. If any of these three files have changed since the last time make
  361. was run, make will recompile myprog1.o by issuing the command on
  362. line five.  It will also realize that myprog.o has changed, that
  363. myprog.exe depends on myprog.o, and will relink myprog.exe.  If
  364. mainhead.h is changed, make will recompile and relink everything
  365. since myprog1.o needs to be changed, myprog2.o needs to be
  366. changed, and thus myprog.exe needs to be changed.
  367.  
  368. The example above shows the general form of a Makefile.  You give
  369. a target (like "myprog.exe" or "myprog1.o") followed by a colon,
  370. followed by a space, followed by a space-delimited list of files
  371. the target depends on.  The next line specifies the action to be
  372. taken when any of the dependencies change:  the first character
  373. MUST be a tab (not just a bunch of spaces used for indentation);
  374. then you type the command make should issue.  A Makefile is just
  375. a list of such targets, dependencies, and actions.
  376.  
  377. 5.0 WHERE TO GET MORE INFORMATION
  378.  
  379. The GNU C and C++ software-development system does not come with
  380. documentation like that you would get with, for example, Borland
  381. C++.  However, emxdev.doc (in the emx\doc directory) does contain
  382. a complete list of library functions, including a list of headers
  383. you need to include, what the functions do, and what parameters
  384. they accept.
  385.  
  386. Also, since the C compiler is ANSI C compliant (or at least close
  387. to it) and since the C++ compiler is very close to AT&T C++ 2.0,
  388. you can use just about any ANSI C and AT&T C++ 2.0 reference
  389. manuals.  I use the ones I got with an old version of Borland
  390. Turbo C++.  If you don't have such manuals, you should be able to
  391. find something suitable in a bookstore.  If you want a C
  392. reference manual, I recommend C:  A Reference Manual, by S. P.
  393. Harbison and G. L. Steele, Jr. (Prentice-Hall, 1991).  If you are
  394. just learning C or C++, there is a large number of books to
  395. choose from, and you shouldn't have any trouble finding one that
  396. is suitable.
  397.  
  398. For those of you developing applications that use the PM or that
  399. use special OS/2 functions, the system DOES support almost all of
  400. the 32-bit OS/2 API functions, including ones for semaphores, PM
  401. programming, named pipes, threads, etc.  See emxdev.doc (in the
  402. emx\doc directory) for a list of the supported functions.  (See
  403. Appendix 1 for information on an optional package that enables
  404. you to use the IBM OS/2 2.0 tool kit for accessing 16-bit API
  405. calls.)  The documentation does not contain a manual on how to
  406. use these API calls -- you need an OS/2 programming book for
  407. that.  For information on programming the PM, take a look at OS/2
  408. 2.0 Presentation Manager GPI:  A Programming Guide to Text,
  409. Graphics, and Printing, by G. C. E. Winn (Van Norstrand Reinhold,
  410. 1992); or Learning to Program OS/2 2.0 Presentation Manager by
  411. Example:  Putting the Pieces Together, by Stephen Knight (Van
  412. Norstrand Reinhold, 1992).  [I  will add more titles when I find
  413. out more information.  Does anyone have recommendations for books
  414. on the OS/2 API in general, not just the PM?]
  415.  
  416. Also, way back when you were unarchiving, you might have been
  417. itching to examine the various readme files and other
  418. documentation.  Now is the time to do that to your heart's
  419. content.  Browse through the files in the emx/doc directory and
  420. the information available from the hypertext reader.
  421.  
  422. Additional sources of information include GEnie (the OS/2
  423. category of the IBMPC bulletin board), Usenet news (the
  424. comp.os.os2 newsgroups), and CompuServe.  These are places where
  425. you can exchange information with other people who use and
  426. program for OS/2.  In particular, CompuServe is one of the
  427. official homes for the OS/2 developers' assistance program.  If
  428. you are a member of the program, IBM will (for only $15) provide
  429. you with a CD that contains a beta version of the software
  430. development kit (including the C compiler and debugger and a full
  431. set of on-line documentation), a beta version of OS/2 (which
  432. contains enhancements such as Windows 3.1 compatibility), and
  433. many other goodies.  For more information, type "go os2dap" on
  434. CompuServe or call 1-407-982-6408.  The people at 1-800-3-ibm-os2
  435. might also be able to provide more information.
  436.  
  437. 6.0 CONCLUSIONS
  438.  
  439. I wrote this to help people get started with a free -- yet
  440. powerful -- 32-bit C and C++ software-development system for
  441. OS/2.  For (at most) the price of a couple of books, you have a
  442. full C and C++ programming system.  For the additional price of
  443. an OS/2 programming book, you have a bargain-basement SDK.
  444.  
  445. If you find errors in this document, or if you have suggestions
  446. for its improvement, please let me know.  My GEnie address is
  447. "BROOKE", and my Internet address is "brooke@hope.caltech.edu".
  448.  
  449. APPENDIX 1:  OPTIONAL PACKAGES
  450.  
  451. There are four optional packages you can get for this
  452. software-development system, packages which are not necessary but
  453. which can nevertheless be important.
  454.  
  455. The first package contains curses.  Curses is a library of
  456. functions that allow you to move the cursor around on the screen,
  457. manipulate screenfuls of text, and get input.  You need the files
  458. "bsddev.zip" and "bsddoc.zip".  The source code is available in
  459. "bsdsrc.zip".  On ftp-os2.nmsu.edu, these files are available in
  460. pub/os2/2.0/programming/emx-0.8e.
  461.  
  462. The second package contains emacs, the GNU programmer's editor. 
  463. I don't like emacs, as it is too complicated for my taste. 
  464. Nevertheless, as mentioned earlier, this is one of the two most
  465. popular editors for UNIX, and it is very popular on many other
  466. operating systems as well.  An interesting feature of GNU emacs
  467. is that you can use it to interact both with the info files (the
  468. ones used by the hypertext reader) and with the debugger.  This
  469. latter ability provides fully-interactive debugging, similar to
  470. what MicroSoft's CodeView or Borland's Integrated Development
  471. Environment offers.  To use emacs, you need the files
  472. "emacs1.zip" (which contains main files), "emacs2.zip" (which
  473. contains more main files), "emacsp1.zip" (which contains a bug
  474. fix), "emacsp2.zip" (which contains another bug fix),
  475. "emacsdoc.zip" (which contains information on installing emacs),
  476. "emacsman.zip" (which contains information on using emacs),
  477. "emacs08e.zip" (which contains a patch so that emacs works with
  478. emx-0.8e), and "emacsinf.zip" (which contains info files).  The
  479. source code is available in "emacssrc.zip" and "emacspat.zip". 
  480. On ftp-os2.nmsu.edu, these files are available in
  481. pub/os2/2.0/gnu/emacs.
  482.  
  483. The third is a package that allows you to use IBM's OS/2 tool kit
  484. for accessing 16-bit API calls.  You still have to buy the tool
  485. kit from IBM, but it is not very expensive.  (In fact, currently,
  486. if you join IBM's developers' assistance program, you can -- for
  487. only $15 -- get a CD containing lots of goodies including the
  488. tool kit.  See the end of Section 5.0 for more information.)  The
  489. package consists of the file "emx16bit.zip".  On
  490. ftp-os2.nmsu.edu, this file is currently available in pub/uploads
  491. but will soon be moving to
  492. pub/os2/2.0/programming/emx-0.8e/contrib.
  493.  
  494. The fourth package contains full source code to the
  495. software-development system.  Most people do not need the source
  496. code to everything, but the source code to the libraries (i.e.,
  497. to all the functions) is sometimes useful.  The source code to
  498. the C libraries is in "emxlib.zip", and the source to the C++
  499. libraries is in "gccsrc.zip".  install.doc (in the emx\doc
  500. directory) gives the names of all the other relevant archives. 
  501. They are available on ftp-os2.nmsu.edu in
  502. pub/os2/2.0/programming/emx-0.8e and on
  503. rusinfo.rus.uni-stuttgart.de in pub/os2/emx-0.8e.  GEnie has only
  504. the source code to the libraries.
  505.  
  506. APPENDIX 2:  SOURCES OF DISTRIBUTION
  507.  
  508. This document already described some places from which you can
  509. get the necessary archives:  ftp-os2.nmsu.edu,
  510. rusinfo.rus.uni-stuttgart.de, GEnie, and perhaps CompuServe and
  511. other on-line services.  However, some people don't have access
  512. to these sites, don't have modems fast enough to download
  513. megabytes of data in a reasonable amount of time, or can't afford
  514. the charges which they might incur by downloading from on-line
  515. services.  For these people, I am including the following list of
  516. people willing to distribute the whole system through regular
  517. mail.  Keep in mind that people might change their prices, cease
  518. distributing the software, move, etc., so contact them first to
  519. get current details.  Make sure you ask them if they have the
  520. latest version of the EMX port (which is currently version 0.8e).
  521.  
  522. Brooke Anderson
  523. 1155 E. Del Mar #312
  524. Pasadena, CA  91106
  525. USA
  526. Phone:  (818) 577-7555
  527. GEnie:  BROOKE
  528. Internet:  brooke@hope.caltech.edu
  529. Cost:  $18 in US; in other countries, disks + shipping + US$5
  530.  
  531. Juergen Egeling
  532. Werderstr. 41
  533. 7500 Karlsruhe
  534. Germany
  535. Phone:  0721-373842
  536. FAX:  0721-373842
  537. BITNET:  ry90@dkauni2
  538. Internet:  ry90@ibm3090.rz.uni-karlsruhe.dbp.de
  539. X.400:  S=ry90;OU=ibm3090;OU=rz;P=uni-karlsruhe;A=dbp;C=de
  540. Cost:  disks + shipping + DM 25
  541.  
  542. Wey J. Ho
  543. Department of Physics
  544. Monash University (Caulfield Campus)
  545. PO Box 197
  546. Caulfield East
  547. VIC 3145
  548. Australia
  549. Phone:  +613-573-2567 (or local (03) 573 2567)
  550. FAX:  +613-573-2350 (or local (03) 573 2350)
  551. Internet:  sci240s@monu6.cc.monash.edu.au
  552. Cost:  disks + shipping + AU$10
  553.  
  554. Doug Robison
  555. 1311 Webster
  556. Chillicothe, MO  64601
  557. USA
  558. Phone:  (816) 646-1085
  559. GEnie:  D.ROBISON
  560. Cost:  disks + shipping + US$5
  561.  
  562. If you would like to get on this list and if you have access to
  563. Internet or an on-line service, just send me your name, a
  564. description of how people can contact you (including your e-mail
  565. address), and how much money you want for the job (such as "$20",
  566. "disks + shipping + $30", or whatever you want to charge).  It is
  567. helpful to have a list that includes people in various countries.
  568.  
  569.  
  570.                              The End 
  571.