DJGPP is a development suite for 386+ IBM PC compatibles which supports
DOSDOS, short for "Disk Operating System", is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.Related...
-enabled operating systems. It is guided by
DJ DelorieDJ Delorie is an American software developer. He initiated and maintains the DJGPP project, a port of the GNU C/C++ compiler and tools suite, targeted for PCs running MS-DOS or DOS terminals under Microsoft Windows....
, who began the project in 1989. It is a
portIn computer science, porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed...
of the popular
GCCThe GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...
compilerA compiler is a computer program that transforms source code written in a programming language into another computer language...
, as well as mostly
GNUGNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
utilities such as bash,
findIn Unix-like and some other operating systems, find is a command-line utility that searches through one or more directory trees of a file system, locates files based on some user-specified criteria and applies a user-specified action on each matched file...
,
tarIn computing, tar is both a file format and the name of a program used to handle such files...
,
lsIn computing, ls is a command to list files in Unix and Unix-like operating systems. ls is specified by POSIX and the Single UNIX Specification.- History :An ls utility appeared in the original version of AT&T UNIX...
, awk,
sedsed is a Unix utility that parses text and implements a programming language which can apply transformations to such text. It reads input line by line , applying the operation which has been specified via the command line , and then outputs the line. It was developed from 1973 to 1974 as a Unix...
, and
ldGNU linker is the GNU Project's implementation of the Unix command ld. GNU ld runs the linker, which creates an executable file from object files created during compilation of a software project. A linker script may be passed to GNU ld to exercise greater control over the linking process...
to DPMI. Languages available include
CC is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
,
C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
,
Objective-CObjective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it...
/C++,
AdaAda is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...
,
FortranFortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
, and
PascalPascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
.
DJGPP is a development suite for 386+ IBM PC compatibles which supports
DOSDOS, short for "Disk Operating System", is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.Related...
-enabled operating systems. It is guided by
DJ DelorieDJ Delorie is an American software developer. He initiated and maintains the DJGPP project, a port of the GNU C/C++ compiler and tools suite, targeted for PCs running MS-DOS or DOS terminals under Microsoft Windows....
, who began the project in 1989. It is a
portIn computer science, porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed...
of the popular
GCCThe GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...
compilerA compiler is a computer program that transforms source code written in a programming language into another computer language...
, as well as mostly
GNUGNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
utilities such as bash,
findIn Unix-like and some other operating systems, find is a command-line utility that searches through one or more directory trees of a file system, locates files based on some user-specified criteria and applies a user-specified action on each matched file...
,
tarIn computing, tar is both a file format and the name of a program used to handle such files...
,
lsIn computing, ls is a command to list files in Unix and Unix-like operating systems. ls is specified by POSIX and the Single UNIX Specification.- History :An ls utility appeared in the original version of AT&T UNIX...
, awk,
sedsed is a Unix utility that parses text and implements a programming language which can apply transformations to such text. It reads input line by line , applying the operation which has been specified via the command line , and then outputs the line. It was developed from 1973 to 1974 as a Unix...
, and
ldGNU linker is the GNU Project's implementation of the Unix command ld. GNU ld runs the linker, which creates an executable file from object files created during compilation of a software project. A linker script may be passed to GNU ld to exercise greater control over the linking process...
to DPMI. Languages available include
CC is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
,
C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
,
Objective-CObjective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it...
/C++,
AdaAda is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...
,
FortranFortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
, and
PascalPascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
.
The compiler generates 32-bit code, which runs natively in 32-bit
protected modeIn computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units...
while switching back to 16-bit
DOSDOS, short for "Disk Operating System", is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.Related...
calls for basic OS support. However, unlike
OpenWatcomWatcom International Corporation was founded in 1981 by three former employees of the Computer Systems Group at the University of Waterloo, in Waterloo, Ontario, Canada...
, it is not a zero-based flat model due to preferring NULL pointer protection for better stability. It is currently based upon a variant of the
COFFThe Common Object File Format is a specification of a format for executable, object code, and shared library computer files used on Unix systems...
format. It can access up to 4 GB of RAM in pure DOS when using a suitable DPMI host (e.g.
CWSDPMICWSDPMI is a DPMI host written by Charles W Sandmann from 1996 to present, currently at r7. It is loosely based upon prior GO32 code used in DJGPP v1. It can provide DPMI 0.90+ services for programs compiled with latest versions of DJGPP etc. compilers. Since r5, it can also be used for programs...
r7 or HDPMI32).
Most notably the original Quake for DOS was compiled with DJGPP, as well as other programs such as GNU Emacs,
p7zipp7zip is a port of the command line version of the 7-Zip file archiver to POSIX-conforming operating systems, such as Unix, Linux, FreeBSD, Windows NT and Mac OS X. It is free software, available under the GNU Lesser General Public License....
,
VimVim is a text editor written by Bram Moolenaar and first released publicly in 1991. Based on the vi editor common to Unix-like systems, Vim is designed for use both from a command line interface and as a standalone application in a graphical user interface...
, beye,
UPXUPX, the Ultimate Packer for eXecutables, is a free and open source executable packer supporting a number of file formats from different operating systems.- Compression :...
, NASM,
THEThe Hessling Editor is one of the older open source text editor projects...
,
Dungeon CrawlLinley's Dungeon Crawl is a roguelike computer game originally programmed by Linley Henzell in 1995, and first released to the general public on October 1, 1997. Dungeon Crawl Stone Soup, a branch of Dungeon Crawl currently in development, is one of the most popular roguelikes being played today...
,
NetHackNetHack is a single-player roguelike video game originally released in 1987. It is a descendant of an earlier game called Hack , which is a descendant of Rogue...
,
PerlPerl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...
,
PythonPython is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
, and auxiliary applications within
ArachneArachne is a full-screen Internet suite containing a graphical web browser, email client, and dialer. It primarily runs on DOS based operating systems, but includes builds for Linux as well, but should not be used with X...
.
Compatibility
DJGPP presents the programmer an interface which is compatible with the
ANSI CANSI C refers to the family of successive standards published by the American National Standards Institute for the C programming language. Software developers writing in C are encouraged to conform to the standards, as doing so aids portability between compilers.-History and outlook:The first...
and
C99C99 is a modern dialect of the C programming language. It extends the previous version with new linguistic and library features, and helps implementations make better use of available computer hardware and compiler technology.-History:...
standards, unofficial DOS standards, and an older
POSIXPOSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...
UnixUnix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
standard. Compiled binaries are long file name-aware and handle such filenames under
Win32Windows 9x is a generic term referring to a series of Microsoft Windows computer operating systems produced since 1995, which were based on the original and later modified Windows 95 kernel...
by default.
TSRTerminate and Stay Resident is a computer system call in DOS computer operating systems that returns control to the system as if the program has quit, but keeps the program in memory...
s to support LFNs under Windows NT 4 or pure
DOSDOS, short for "Disk Operating System", is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.Related...
are available. As of July 2011, the newest GCC supported by DJGPP is 4.6.1, providing under DOS the standards C99/
1xC1X is the unofficial name of the planned new standard for the C programming language. It is intended to replace the existing C standard, informally known as C99. This new version mainly standardizes features that have already been supported by common contemporary compilers, and includes a detailed...
,
C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
98/11, as well as the first release of support for Ada2012.
While DJGPP runs in 32-bit
protected modeIn computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units...
, its stub and library heavily rely upon many 16-bit DOS and BIOS calls. Because the
x86-64x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets. x86-64 also provides 64-bit general purpose registers and numerous other...
versions of
WindowsMicrosoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
lack support for 16-bit programs, there is no
NTVDMVirtual DOS machine is Microsoft's technology that allows running legacy DOS and 16-bit Windows programs on Intel 80386 or higher computers when there is already another operating system running and controlling the hardware.-Overview:...
, and DJGPP apps cannot be run. Under x86-64 systems these apps only function through emulation (e.g.
DOSBoxDOSBox is emulator software that emulates an IBM PC compatible computer running MS-DOS. It is intended especially for use with old PC games. DOSBox is free software....
),
virtualizationIn computing, x86 virtualization is the facility that allows multiple operating systems to simultaneously share x86 processor resources in a safe and efficient manner, a facility generically known as hardware virtualization...
(e.g.
VirtualBoxOracle VM VirtualBox is an x86 virtualization software package, originally created by software company Innotek GmbH, purchased by Sun Microsystems, and now developed by Oracle Corporation as part of its family of virtualization products...
), or similar (e.g. Linux's
DOSEMUDOSEMU, alternatively rendered dosemu, is a compatibility layer software package that enables MS-DOS systems, DOS clones such as FreeDOS, and DOS software to run under Linux on x86-based PCs ....
). This problem arises because x86-64 processors in
long modeIn the x86-64 computer architecture, long mode is the mode where a 64-bit application can access 64-bit instructions and registers...
do not support the
virtual 8086 modeIn the 80386 microprocessor and later, virtual 8086 mode allows the execution of real mode applications that are incapable of running directly in protected mode while the processor is running a protected mode operating system.VM86 mode uses a segmentation scheme identical to that of real mode In...
used to run 16-bit code in IA-32 processors.
See also
- MOSS - "Mach on DOS" - a POSIX DOS extender, supported by GCC 2.7 through 3.3.6
- EMX/RSX
EMX , a.k.a. emx+gcc, is a programming environment for DOS and OS/2. It allows creating and executing of 32-bit mode applications, presenting a POSIX API and, on OS/2, access to the OS/2 APIs.-Contents:...
- a POSIX implementation for OS/2 and DOS
- Cygwin
Cygwin is a Unix-like environment and command-line interface for Microsoft Windows. Cygwin provides native integration of Windows-based applications, data, and other system resources with applications, software tools, and data of the Unix-like environment...
- a Linux API compatibility layer with many ported libraries and applications
- MinGW
MinGW , formerly mingw32, is a native software port of the GNU Compiler Collection and GNU Binutils for use in the development of native Microsoft Windows applications; MinGW can function either as a cross compiler targeting Windows or as a native toolchain run on Windows itself...
- a native port of the GNU toolchain for Windows, designed to require minimal runtime support
- GnuWin32
The GnuWin32 project provides native ports in the form of runnable computer programs, patches, and source code for various GNU and open source tools and software, much of it modified to run on the 32-bit Windows platform...
External links
Unofficial or unfinished ports