Hi Raj, For all your questions, this really isn't the right forum for these kinds of questions. I suspect there isn't a single "right forum" for your questions. You'd probably get better, faster, more accurate information by inquiring on YAGARTO, GNUARM, Cygwin, and MinGW forums. I do not say this to chastise, I mention it so you can get better, faster responses to your questions. This forum is for GCC help. GCC is a compiler and a toolchain driver for several tools that are not, themselves, part of GCC. GCC is not a debugger. GCC is not a linker. GCC is not an assembler. GCC is not a C library. GCC is not an IDE. GCC is not Cygwin. GCC is not MinGW. That being said... > Can [you] please tell me my why we would use [something] like > YAGARTO I'm not familiar with YAGARTO (Yet Another GNU ARM Toolchain). I recommend you review the information on the YAGARTO website. > GNUARM I'm not familiar with GNUARM. I recommend you review the information on the GNUARM website. > cygwin Cygwin is a Unix/POSIX like environment for Windows. In my opinion, it is a very, very nice Unix/POSIX like environment for Windows. There are others, too, such as Interix, MS-SFU, MKS, CoLinux, UWIN which may be suitable for a given need. Installing Cygwin does not come with GCC by default, but if you run the Cygwin SETUP.EXE you can select GCC to be installed. GCC in Cygwin on Windows allows you to compile your source code to run in the Cygwin Unix/POSIX like environment in Windows. > MinGW MinGW enables you to use GCC to create Windows executables, using the WinAPI. Your executables are not linked against the Cygwin Unix/POSIX like layer, rather they are linked against the WinAPI DLLs directly. Sincerely, --Eljay