From: <ef...@io...> - 2012-06-21 09:53:28
|
hi, I'm new to mingw. I compiled (gcc v.4.6.2) a source with MSYS. It work exactly as under Linux inside the MSYS shell. When I run it inside a CMD windows, it exit prematurely without runtime error. Funny, it branch in different manner and exit showing a source managed error. Before debugging the code, does the MinGw binary need any dependance (other than msvcrt.dll) that MSYS supply and CMD not, that can justify this? Is this a know behavior? thank you for any help, Valerio |
From: LRN <lr...@gm...> - 2012-06-21 10:18:41
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 21.06.2012 13:53, ef...@io... wrote: > hi, I'm new to mingw. I compiled (gcc v.4.6.2) a source with MSYS. > It work exactly as under Linux inside the MSYS shell. When I run it > inside a CMD windows, it exit prematurely without runtime error. > > Funny, it branch in different manner and exit showing a source > managed error. Before debugging the code, does the MinGw binary > need any dependance (other than msvcrt.dll) that MSYS supply and > CMD not, that can justify this? Is this a know behavior? > 1) Make sure you get all gcc dependencies. Besides msvcrt it also depends on libgcc and maybe some other libraries. Its files also spread around (i.e. it's not just gcc.exe, there are files in libexec et cetera). 2) If you've compiled it in MSYS-MSYS shell (`uname` says "MSYS_NT-...") instead of MINGW-MSYS shell (`uname` says "MINGW32_NT-..."), then you will never be able to run it outside of MSYS-MSYS shell. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJP4vTuAAoJEOs4Jb6SI2CwvY4H/24YzJ4xjKQiA3QmQKOmNh3j 72dRkPipbj9kLV8GBheifZKQdMl8tS/m412X5MQLoo+n6lIKtkfljmtNCZ7qR8nk hGUw4yMqJ5HOUu0TbzFyVJIVA2iPD7Zywlqu4vgw9kvlAdjE8Bpj1YVhvXvx9nJS M1iqtMkHsh4L477lA3LF3BgT8vZpjaUE3AaAGYnCyOrfK6OUHFIomA7CI2jKADEg oCguJXBt5lPeSkHfmEOB9CWTjN6UCITOrzhHQq6Yw5GHpgIPYeZwG/H25liIEWqJ 3OlkYFcwRrAXrCwq7hVPoslX/QuDKM0izK6cT8gt6SWnKErSQO7Oqsi889ulc4Q= =bdrL -----END PGP SIGNATURE----- |
From: Valerio M. <ef...@io...> - 2012-06-22 23:02:45
|
LRN wrote: > 1) Make sure you get all gcc dependencies. Besides msvcrt it also > depends on libgcc and maybe some other libraries. Its files also > spread around (i.e. it's not just gcc.exe, there are files in > libexec et cetera). solved, I debugged the code and was my fault. The previous code did some parameter checks, but managed two different error as was one. In particular said empty parameter error if a parameter contained a single quote. The difference is that MSYS (GNU sh) remove the double single quote from command line parameters, while CMD do not. The executable exit showing a "strange" error when was the user that surrounded the parameter with single quote. This does no difference on MYS and Linux, but do on CMD. Now I better checked command line parameters for supported chars, so user can understand what is the problem. Now that the exec work as I expect, I tested the binary deps, and I saw the executable does not depend on nothing. I set the PATH=. and run the executable, it work well, without any .dll file besides, not even msvcrt. By default Mingw compile all dependencies with static linking. This is normal? The executable is double size than Linux one, but work well. > 2) If you've compiled it in MSYS-MSYS shell (`uname` says > "MSYS_NT-...") instead of MINGW-MSYS shell (`uname` says > "MINGW32_NT-..."), then you will never be able to run it outside of > MSYS-MSYS shell. in my installation (I used the GUI installer), uname say MINGW32_NT-* What is MSYS-MSYS shell ? anyway thank you for the porting work, Valerio |
From: John B. <joh...@ho...> - 2012-06-23 11:44:47
|
Hello Valerio, On Sat, 23 Jun 2012 01:02:38 +0200, Valerio Messina wrote: > > LRN wrote: > > 1) Make sure you get all gcc dependencies. Besides msvcrt it also > > depends on libgcc and maybe some other libraries. Its files also > > spread around (i.e. it's not just gcc.exe, there are files in > > libexec et cetera). > > solved, I debugged the code and was my fault. ... > > > I set the PATH=. and run the executable, it work well, without any .dll > file besides, not even msvcrt. > By default Mingw compile all dependencies with static linking. This is > normal? > The PATH is not the only place where the system searches for a DLL. See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx for more information. By default, a MinGW program *must* depend on msvcrt.dll. There are ways of linking to a more recent version of the Microsoft C run-time library if you want. Search the list archives. I believe that by default, MinGW prefers dynamic linking. You can override it with -static or something similar. Regards, John Brown. |