>I thought mingw binaries only need standard windows libraries?
that’s not true for any sufficiently complex program
actually – to my surprise – i just put both mingw64/bin/ and mingw32/bin/
in the path and was able to compile and run 32 and 64 bit gcc built
executables from both 32 and 64 bit python3
i wouldn’t do that tho, but instead use a wrapper script which allows you
to run either 32 or 64 bit stuff in isolation
On Sun, Apr 1, 2018 at 4:14 PM Brendan Simon (eTRIX) <
brendan.si...@etrix.com.au> wrote:
> It worked ok if I used the msys python (`c:\msys64\usr\bin\python.exe`).
> I could build both mingw32 and mingw64 exes.
>
> I just noticed my path had `:` instead of `;` to separate the paths.
> Fixed that, but I still had the same issue.
>
> I found I could get both to compile under the following situations.
>
> set path to `c:\msys64\mingw32\bin` and invoke python with
> `c:\msys64\mingw64\bin\python3.6m.exe`
>
> However, I could only run the 32-bit version (due to the path).
>
> set path to `c:\msys64\mingw64\bin` and invoke python with
> `c:\msys64\mingw32\bin\python3.6m.exe`
>
> However, I could only run the 64-bit version (due to the path).
>
> So how can I run both mingw32 and mingw64 executables, without having
> *both* mingw32\bin and mingw64\bin in the path?
>
> Why do I need to have mingw32\64 in the path. I thought mingw binaries
> only need standard windows libraries? (doesn't seem to be the case).
>
> Thanks, Brendan
>
> ------------------------------
> On 1/04/2018 11:47 PM, Norbert Pfeiler wrote:
>
> just don’t put both 32 and 64 bit in your path because the libraries and
> executables have the same name in both prefixes
> python start without the path set, for example
>
> On Sun, Apr 1, 2018 at 3:36 PM Brendan Simon (eTRIX) <
> brendan.si...@etrix.com.au> wrote:
>
>> Hi Norbert,
>>
>> Thanks for your reply. I do have a whole lot of stuff in my path, set by
>> various application installers. BTW, I'm running Windows 10 Pro.
>>
>> I open a DOS Prompt and set the path. I first prepended
>> `c:\msys64\mingw64\bin`, and that didn't work.
>> I then prepended `c:\msys64\mingw32\bin`, and that didn't work.
>> I then prepended `c:\msys64` (as that had previously helped when running
>> `g++` from command prompt), but that didn't help either.
>>
>> The start of my path looks like this:
>>
>> PATH=c:\msys64:c:\msys64\mingw32\bin:c:\msys64\mingw64\bin:
>>
>> I run python from DOS prompt with:
>>
>> C:\Users\brend>c:\msys64\mingw64\bin\python3.6m.exe
>>
>> >>> import subprocess
>> >>> r = subprocess.run( [ 'c:/msys64/mingw64/bin/g++', '-Wall', '-o',
>> 'hello64.exe', 'hello.cpp' ], cwd='c:/msys64/home/brend' )
>> >>> r.returncode
>> 0
>>
>> The exe built and runs ok :)
>>
>> Now try to build with mingw32 (running in the same mingw64 python
>> session).
>>
>> >>> r = subprocess.run( [ 'c:/msys64/mingw32/bin/g++', '-Wall', '-o',
>> 'hello32.exe', 'hello.cpp' ], cwd='c:/msys64/home/brend' )
>>
>> I get a Windows dialog pop up with the message:
>>
>> cc1plus.exe - Application Error
>> The application was unable to start correctly (0xc000007b).
>>
>> Any suggestions?
>> Does it make a difference in the order of the mingw32/64 paths?
>> Do I need paths set as a system environment variable?
>>
>> Thanks, Brendan.
>>
>> ------------------------------
>> On 1/04/2018 11:05 PM, Norbert Pfeiler wrote:
>>
>> As far as i know this is all due to PATH, and should also be independent
>> of the fact if it’s invoked from python or directly in the shell.
>> DLL not found errors actually arise from them not being available,
>> although you can also screw yourself with dlls with the same name but wrong
>> architecture (although you’d probably get symbol errors then).
>> a) 32 bit msys is no different than the 32 bit packages in 64 bit msys,
>> in fact it’s just the 64 bit part missing
>> b) You . They are pure Windows executables in the sense that don’t
>> require an emulation layer (cygwin, msys2-base) to run but directly use the
>> windows API.
>> c) You don’t need static, but the libraries it errors about (you can also
>> check with ldd or depends.exe → google).
>>
>> To conclude this, i just installed the 32 bit toolchain, i have
>> mingw64/bin/ in my path, started python3 from a windows command prompt and
>> successfully ran subprocess.run('D:/msys64/mingw32/bin/g++')
>>
>> I think you may have too much in your path.
>> Then again you also didn’t specify if you had dll not found or symbol
>> errors.
>>
>> On Sun, Apr 1, 2018 at 1:01 PM Brendan Simon (eTRIX) <
>> brendan.si...@etrix.com.au> wrote:
>>
>>> I'm new to MSYS2 and first time on the mailing list ("Hi!"),
>>>
>>> I have installed MSYS2 (x86_64) and install various packages to be used
>>> with a Jenkins CI system. Basically Jenkins clones a branch from a local
>>> git repo, then runs a DOS batch file (yes, I know !!), which sets up some
>>> environment variables for Embarcadero and IAR compilers, then calls a
>>> custom python script to run unit tests and coverage (gcov).
>>>
>>> The python script is invoked with
>>> `c:\msys64\mingw64\bin\python3.6m.exe`. It then builds some unit tests
>>> using mingw64-gcc, `c:/msys64/mingw64/bin/g++.exe`, via python's
>>> `subprocess.run()`
>>>
>>> This works ok, but I decided that all our production compilers are
>>> 32-bit, so it would make sense to run the unit tests with a 32-bit compiler
>>> too. So I changed the the compiler command to:
>>> `c:/msys64/mingw32/bin/g++.exe`, which FAILS to run !! DLL errors
>>> (`libwinpthread*`, etc).
>>>
>>> If I invoke the 32-bit python executable
>>> (`c:\msys64\mingw64\bin\python3.6m.exe`) then all is good, but of course I
>>> can't run 64-bit programs (e.g. `c:/msys64/mingw64/bin/g++.exe`), as I get
>>> the same errors as before, presumably for the same reasons.
>>>
>>> Also, when I used a 64-bit g++ with 64-bit python, the resultant
>>> executable wouldn't run, again due to DLLs. I had to use `-static` linker
>>> option to get it to run. Setting the PATH didn't seem to help.
>>>
>>> I can live with using 32-bit Python, however I'd like to understand what
>>> is going on.
>>>
>>> (a) I presume I would be better off installing the i686 version of
>>> MSYS2, and only using mingw32 bit subsystem. yes?
>>>
>>> (b) When running the mingw64 Python (from a DOS prompt), why can I not
>>> invoke a mingw32 executable (e.g. `g++`) from that python script (and vice
>>> versa) ?
>>> Both the mingw32/64 bit python and other executables are supposed to be
>>> pure Windows executables and independent of MSYS2, aren't they?
>>>
>>> (c) Why do I need to use the `-static` linker option to run a program
>>> I've built? What libraries do I need in my path and how do I set library
>>> paths? Iis it just PATH or something else? PATH didn't seem to work for
>>> me!
>>>
>>> Thanks, Brendan.
>>> --
>>> ------------------------------
>>>
>>> ------------------------------------------------------------------------------
>>> Check out the vibrant tech community on one of the world's most
>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>> _______________________________________________
>>> Msys2-users mailing list
>>> Msys2-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/msys2-users
>>>
>>
>>
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Msys2-users mailing list
Msys2-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/msys2-users