MinGW: Difference between revisions
Jump to navigation
Jump to search
[unchecked revision] | [unchecked revision] |
Content added Content deleted
No edit summary |
No edit summary |
||
(6 intermediate revisions by 6 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 |
'''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.