[Ipopt] Building Ipopt Matlab Interface (Win, 64 bit)
Tony Kelman
kelman at berkeley.edu
Thu Mar 7 22:57:29 EST 2013
Dino,
I (re-?)discovered the reason the two distributions of MSYS are giving
different results. There's a line in libtool that uses find, which is not
present in MSYS-20111123.zip. This ends up trying to use the Windows version
of find.exe, which does something entirely different than Unix find. Buried
in the output from make are probably a few error messages "FIND: Parameter
format not correct" which results in the call that creates libipopt.a ("ar
cru .libs/libipopt.a ...") not including nearly enough of the .o files that
it should be putting in the library. So I'm seeing libipopt.a is about 10x
smaller in size than it should be, and lots of undefined reference errors.
There is a note about this on the current issues page
https://projects.coin-or.org/BuildTools/wiki/current-issues#MinGWPath - it's
rather subtle in this case since things seem to nearly work until you try
linking.
To all current & future Windows Ipopt users, I recommend the MSYS
installation from
http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/ rather
than anywhere else. You can hopefully use MinGW-64 from anywhere, just
modify the file /etc/fstab in MSYS to switch to the MinGW-64 compilers. I
have had the most luck with the TDM-GCC distribution Dino is using (not many
others support OpenMP from Fortran 90 code), but the MSYS shell is a
separate download from the MinGW-64 compilers.
-Tony
-----Original Message-----
From: Tony Kelman
Sent: Thursday, March 07, 2013 4:16 PM
To: Dino Hüllmann
Subject: Re: [Ipopt] Building Ipopt Matlab Interface (Win, 64 bit)
I seem to remember having had problems with that version of Msys, and I just
confirmed my suspicion. I tried to replicate your Msys installation and
wasn't able to do "make test" in Ipopt, any linking of Windows executables
or shared libraries (dll or mex) fails. Can you do "make test" in the main
build directory successfully, or do you get undefined reference errors when
trying to create hs071_cpp.exe?
So this appears not to be a Matlab interface problem, but an issue with
linking in your Msys setup. Try installing Msys using the mingw-get-inst
installer from
http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/ and
modify the file /etc/fstab to point to your TDM-GCC MinGW64 installation. I
have instructions written up here:
http://www.mpclab.net/Trac/wiki/CompilingIpopt#MinGW
-Tony
-----Original Message-----
From: Dino Hüllmann
Sent: Thursday, March 07, 2013 3:24 PM
To: Tony Kelman
Subject: Re: [Ipopt] Building Ipopt Matlab Interface (Win, 64 bit)
Since compiling using g++ did not work I tried the
x86_64-w64-mingw32-g++, but that yields the same result.
Replacing "set COMPILER=g++" has no effect.
To set up MinGW I used the TDM-GCC 64 installer (tdm64-gcc-4.7.1-3.exe),
added the Fortran compiler and installed it to C:\MinGW64.
For msys I downloaded MSYS-20111123.zip from the MinGW-w64 project
(URL:
http://sourceforge.net/projects/mingw-w64/files/External%20binary%20packages%20%28Win64%20hosted%29/MSYS%20%2832-bit%29/
)
and unpacked it to C:\MinGW64\msys (at a different location gnumex was
not able to create the mexopts.bat since it did not find the required
files).
Finally, I ran msys' postinstall script (/postinstall/pi.sh).
Afterwards the usual steps: cloning trunk to
C:\MinGW64\msys\home\username\trunk, get.Blas, get.Lapack, get.Mumps,
get.Metis, get.gnumex, configure, make
Best regards
Dino
More information about the Ipopt
mailing list