MinGW: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
m (Killing "PlusPlus" for "Dev-C++" too (last one ...))
No edit summary
 
(5 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Stub}}
'''MinGW''' (Minimalist GNU for Windows) is a port of several GNU utilities to the Windows console environment, including GCC. It is less sophisticated than Cygwin, but more compact and has a lower overhead. It is most widely used in conjunction with the [[Dev-C++]] and CodeBlocks [[:Category:IDEs|IDE]].
'''MinGW''' (Minimalist GNU for Windows) is a port of several GNU utilities to the Windows console environment, including the GCC / binutils toolchain. It is less sophisticated than Cygwin, but more compact with a lower overhead. It is most widely used in conjunction with the [[Dev-C++]] and CodeBlocks [[:Category:IDEs|IDE]].

Note that
* MinGW is a 10+ megabyte download and, like Cygwin, now requires a helper DLL (<tt>MSYS-1.0.DLL</tt>). So it's no longer "minimal".
* MinGW '<tt>make</tt>' uses '<tt>sh</tt>' as the shell if it finds '<tt>sh</tt>' on the path. This is the Wrong Thing. DJGPP '<tt>make</tt>' works better: it looks at the <tt>SHELL</tt> and <tt>COMSPEC</tt> environment variables.

==OSDev==

Really, you're advised not to use MinGW for OSDeving, but instead to use [[Cygwin]]. MinGW has a collection of issues that make it poorly suited for our needs:

# (GCC 2.95) <tt>ld -r -d ...</tt> doesn't get rid of all the common variables.
# (GCC 2.95) BSS size is stored in the wrong location of the section header, so MinGW does not correctly interoperate with NASM.
# <tt>ld -Ttext=NNN ...</tt> doesn't put the .text section at the correct address unless you also use the --image-base=0 option.
# Linker claims to support ELF, but says "PE operations on non PE file" if you try to use ELF.

But if you write a link script, you'll still be able to make it able to be a Multiboot-kludge compatible kernel. If you are interested you can visit FreeDOS-32 and its kernel can be compiled by MinGW.

<pre>
/* The link script
( Note: the format should be "pe-i386" instead of
"pei-i386" to ged rid of the "MZ" header. text
and data sections should be close to each other. )
*/
OUTPUT_FORMAT("pe-i386")
ENTRY(start)
SECTIONS {
.text :{
*(.text)
}

.data ADDR(.text) + SIZEOF(.text) :{
*(.data)
*(.data2)
*(.rdata)
__data_end__ = . ;
}

.bss ADDR(.data) + SIZEOF(.data) : {
*(.bss)
*(COMMON)
__bss_end__ = . ;
}
}
</pre>


==See Also==
==See Also==
Line 52: Line 10:
===External Links===
===External Links===
*http://www.mingw.org/
*http://www.mingw.org/
*http://my.execpc.com/~geezer/os/index.htm#borealis - Chris Giese tip-toed around the bugs and got his kernel to build with MinGW


[[Category:Compilers]]
[[Category:Compilers]]
[[Category:Windows]]

Latest revision as of 18:57, 9 July 2023

This page is a stub.
You can help the wiki by accurately adding more contents to it.

MinGW (Minimalist GNU for Windows) is a port of several GNU utilities to the Windows console environment, including the GCC / binutils toolchain. It is less sophisticated than Cygwin, but more compact with a lower overhead. It is most widely used in conjunction with the Dev-C++ and CodeBlocks IDE.

See Also

Articles

Forum

External Links