This release contains a file called specs. The file defines some GCC switches, if you use the new GCC options -Zwin32 and -Zrsx32. To use C runtime DLLs you should use the option Zcrtdll=crtrsxnt
Type of executables:
-Zwin32:
Builds a GUI or Console Win32 program. The program is linked with the default Win32 libraries kernel32.a, user32.a and gdi32.a. The program should run under all Win32 environments. Win32s for Win31 only supports GUI programs and has a limited Win32-API, but the console programs (like gcc) can run inside the IDE rsxide.
-Zrsx32:
Builds a bound Win32 program. These programs can run under Win32 console and under a 32-bit DPMI host (DOS boxes, QDPMI, 386MAX) with the RSX DOS-extender. RSXWIN 3.1 can run these executables in a window of Win 3.x environments (also WINOS/2).
It is really easy to modify makefiles for emx tools to create Win32 applications. For the most GNU tools you must only redefine the “CC„ macro.
$(CC) = gcc -Zwin32
or
$(CC) = gcc -Zrsx32
-Zwin32 | Creates Win32 executable |
-Zrsx32 | Creates bound executable (Win32 console / 32-bit DOS) |
-Zsys | Use system library instead rsxnt.dll |
-Zmt | Creates a multithreaded application |
-Zdll | Creates a Dynamic Link Library (DLL) |
-Zno-rte | Executable without C-runtime |
-Zdll-so | Stand-alone DLL |
-Zcrtdll=crtrsxnt | Uses the dynamic C runtime DLL |
-mprobe | Enables stack probes to commit the stack |
-m486 | Align for 486 CPU and higher |
-Wall | Enables all warnings |
-c | compile only, does not link |
-g | Includes symbolic debugging information (GDB) |
-s | Strips symbols from executable |
-O | Enables optimizer |
-pipe | Use pipes rather than temporary files for communication between the various stages of compilation. |
-v | Prints compile commands |
Pre-processor:
The option -Zwin32 defines the symbol __WIN32__ and __RSXNT__.
The option -Zrsx32 defines the symbol __RSX32__ and __RSXNT__.
The option -Zcrtrsxnt=crtrsxnt defines the symbol __CRTRSXNT__.
The option -Zdll defines the symbol __DLL__
Compiler:
The new options set the cc1 option -mprobe to enable stack probes.
Linker:
The options -Zwin32 and -Zrsx32 links the program at the Win32 image base address 0x400000. Some emx C-library functions are replaced with the libraries win32crt.a, win32dll.a, wthreads.a, c_dllnrt.a and winmain.a.
The option -Zwin32 also links the libraries kernel32.a, user32.a and gdi32.a to the program.
Zcrtdll=rsxntcs will link the C runtime library to the application.
Ntbind:
-Zwin32 -s (Win32 release):
Ntbind uses a short DOS stub, that prints: 'This Win32 program cannot run under DOS'.
-Zwin32 (Win32 debug):
Ntbind uses a emx compatible DOS stub, that allows to use GDB. Unfortunately, RSX can run this program.
-Zrsx32 (bound mode):
Ntbind uses the DOS stub 'dosstub.rsx' that contains a valid emx header. RSX and RSXWIN also can run this program.
Possible applications and supported environments:
GCC | TXTADDR | COMMENT | NT | 95 | 32S | RSX | -WIN | EMX | OS2 |
-Zwin32 | 0x410000 | Win32 GUI, Console | x | x | x | - | - | - | - |
-Zrsx32 | 0x410000 | text-applications | x | x | (x)1 | x | x | - | - |
- | 0x10000 | text-applications | - | - | - | x | x | x | x |
- | 0x10000 | PM OS/2 app | - | - | - | - | - | - | x |
Notes:
1: Inside RSXIDE program
Column | Description |
NT | WinNT 3.5x |
95 | Win95 |
32S | Win3.1 + Win32s 1.30 |
RSX | DOS-box or DOS with DPMI and rsx extender |
-WIN | Win 3.1/95 and rsxwin extender |
EMX | DOS and emx extender |
OS2 | OS/2 2.x / 3.x |