Mail Archives: djgpp/2000/04/10/10:40:51

From: Damian Yerrick <Bullcr_pd_yerrick AT hotmail DOT comRemoveBullcr_p>
Newsgroups: comp.os.msdos.djgpp
Subject: Read Me Third
Organization: Pin Eight Software
Message-ID: <>
X-Newsreader: Forte Agent 1.7/32.534
MIME-Version: 1.0
Lines: 198
X-Trace: /wODLPvkjcBmB/ctUyTZgPnhpzOI49yLuXenZaMgM38rYYIcJ5EQm6Kg8fiBZa9ybsasIX6jr9ES!DMLWycqf9SsvphIRjgBKuNiYSKy5iRczuFhYiw8FiMcOei8Pd0Hosqmt5nWxdIFUUNx4/Ikp/AVh!pLQgE84=
X-Complaints-To: abuse AT gte DOT net
X-Abuse-Info: Please be sure to forward a copy of ALL headers
X-Abuse-Info: Otherwise we will be unable to process your complaint properly
NNTP-Posting-Date: Mon, 10 Apr 2000 13:44:51 GMT
Distribution: world
Date: Mon, 10 Apr 2000 13:44:51 GMT
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

 _____________ _____________ _____________ _____________ _____________
Read Me Third: The Short DJGPP FAQ List
Most Frequently Asked Questions in comp.os.msdos.djgpp
By Damian Yerrick
(updated 14 February 2000)

Because many people do not have time to browse through the whole 200-
page DJGPP FAQ list, I created this extremely condensed version based
on the most common DJGPP questions on c.o.m.d and c.o.m.p.
Read the original at
Read the latest short FAQ at

To be included in this list, a question must be related to DJGPP and
discussed in at least five separate threads in comp.os.msdos.djgpp
and/or comp.os.msdos.programmer. If a question is also answered in the
full FAQ, these five questions must have come within five weeks.

 1. Why DJGPP?
 2. Location of Info-ZIP
 3. I know C++. How do I enter my code into DJGPP?
 4. C++: linker "undefined reference" to everything
 5. C++: linker "cannot open -lstdcx"
 6. Long file names
 7. How do I do (graphics)? How do I do (sound)? What is "spilled"?
 8. What is DPMI?
 9. Program crashes in _free
10. Help!
11. Locations of various commonly requested files

Q: I'm looking for a DOS compiler. Why DJGPP?

A: Watcom C++ was a payware C/C++ compiler that made 32-bit DOS
binaries. You can recognize a program built with Watcom because it
will generally come with the DOS extender DOS4GW.EXE. According to
Sascha Bendinger <digana AT t-online DOT de>, it has been shelved and is
no longer developed.

DJGPP, on the other hand, is a free C/C++ compiler that makes 32-bit
DOS binaries. DJGPP programs often come with a DPMI host called
CWSDPMI, but a compatible extender is built into enhanced mode
Windows 3.1 and later. Because DJGPP is a port of the popular GNU C++
Compiler, programs developed with DJGPP will be more portable (Davin
McCall <DavMac AT iname DOT com>). And its C library fully supports long
filenames where the host DOS provides them, i.e. under Windows 95, 98,
and 2000 (note: not NT <= 4).

Q: WinZip wants to put each zipfile's contents into a new folder. How
do I unzip everything into C:\DJGPP?
Q: WinZip wants to make long filenames on my Windows NT. How do I
turn them off?

A: Get unzip32 from the DJGPP Zip Picker, at
Then install everything as directed in the README.

Q: How do I enter my code into DJGPP?

A: You can use any text editor and then use gcc from the command line:
  C:\>gcc hello.c -o hello.exe
Or you can use RHIDE, Robert Hoehne's Integrated Development
Environment, which works almost exactly like Borland Turbo C++ for
DOS. If you downloaded it from Pavenis's web site
and you installed DJGPP to c:\djgpp, RHIDE should be at
Many people use a text editor (Emacs and vi are popular) to edit
their code and GNU Make, a scripting language for file translation
dependencies, to manage compilation.
  C:\>info make

Q: I can compile and link C code just fine, but when I try to
compile and link a C++ program from the command line, I get
"undefined reference" errors all over the place.

A: Use gpp instead of gcc. gpp knows about the
extra libraries that C++ programs need.

Q: When I try to compile and link a C++ program in RHIDE, I get
  Error: C:/djgpp/bin/ld.exe: cannot open -lstdcx: No such file or
    directory (ENOENT)

A: RHIDE 1.4 has a slight bug with long filenames in C++. See section
8.8 of the full FAQ list for a full explanation. A fix for this
problem has been integrated into DJGPP 2.03; get it at the
zip picker.

Q: Why can't the C++ compiler find streambuf.h or -lstdcxx?
Q: Why can't I use long file names under NT or plain DOS?

A: MS-DOS by itself does not support long file names such as
s t r e a m b u f . h
and neither does Windows NT 4's DOS emulator. You probably used WinZip
under Windows to unzip DJGPP (giving stream~1.h according to plain
DOS). Try reinstalling DJGPP using unzip32, as described above. See
also sections 8.3 and 22.18 of the full FAQ list.

Q: How do I do (graphics)?
Q: How do I do (sound)?
Q: How do I do (mouse)?

A: The Allegro library by Shawn Hargreaves et al. handles the
keyboard, mouse, joystick, graphics, waves, and MIDI. Version 3.931
works on MinGW, Linux, DJGPP, Watcom C++, and even dreaded
Microsoft Visual C++ and Borland C++Builder. Get it at

Note: Allegro, when built for DOS, will not be able to use SVGA
resolutions (anything over 320x200) under Windows NT because NT
prohibits the sort of direct access required for SVGA. However, if you
build with Micro$oft Visual C++ or MinGW, you'll get a Win32 program
that uses DirectX.

Q: What is DPMI?
Q: When I try to run my program on my other computer, it gives me
Load error: no DPMI; get csdpmi*

A: DPMI, or the DOS Protected Mode Interface, is a method of
communication between 32-bit DJGPP programs and 16-bit PC DOS (MS-DOS,
DR DOS, FreeDOS). To run DJGPP programs in DOS mode (booting straight
into DOS as opposed to a DOS emulation box in Windows), you'll need a
DPMI host such as CWSDPMI. Download it from the DJGPP Zip Picker; then
unzip cwsdpmi.exe into a folder on your PATH.

Q: My program crashes. When I symify the traceback, the first EIP
is inside the _free function.
Q: I can run a program under Windows 95.  Why does it SIGSEGV under
plain DOS?
Q: Why do I get different results if I run a program more than once?
I didn't use any pseudorandom number generators.

A. Your program most likely wrote beyond the end of a block or tried
to access uninitialized memory or dereference a NULL pointer. Try a
memory debugger such as YAMD. For more information, see section 9.2
of the full DJGPP FAQ list.

Q: My program doesn't work. Can someone on c.o.m.d help?

A: The general consensus is that we'll help if you provide these five

1. Version number of DJGPP, gcc, binutils, and any add-ons
   (Allegro, RSXNTDJ, etc.) you are using.
2. Your operating system (DOS? Sin95? 98? NT? Linux cross-compiler?)
3. The smallest source code fragment that produces the error.  Often,
   trying to isolate the problem leads to an easy fix.
4. The command line you are using to make the program.
5. The exact error messages you get, either the error output from GCC
   (if you can't compile) or the output from symify.exe if there is a
   list of traceback EIPs (that is, if your program crashes at

Otherwise, we're not psychics. :-)

If you have any questions or comments, post them at
comp.os.msdos.djgpp *or* mail them to djgpp AT delorie DOT com; if they're
the most frequently asked, they may become part of this short FAQ

Damian Yerrick

11. Commonly Requested Files

Allegro, a game I/O library
DLM, a dynamic linking package

Hate spam?
Looking for tetris?
Looking for a book? Try Barnes & Noble.

Damian Yerrick
"I refuse to listen to those who refuse to listen to reason."
See the whole sig:

This is McAfee VirusScan. Add these two lines to your signature to
prevent the spread of signature viruses.

- Raw text -

  webmaster     delorie software   privacy  
  Copyright 2019   by DJ Delorie     Updated Jul 2019