[Coin-ipopt] IPOPT+CUTEr can't work

Dominique Orban Dominique.Orban at polymtl.ca
Wed Nov 9 14:26:43 EST 2005


Andreas,

What you say makes total sense and also corresponds to my memories, but 
something seems wrong as when I unpack IPOPT, there is no lib 
subdirectory! It is not created either when I say 'make'. So there's no 
libipopt.a to be found.

Dominique

Andreas Waechter wrote:
> Hi Dominique,
> 
> Thanks for your feedback!
> 
> 
>>Now that I look into it, it would appear that the libraries in IPOPT
>>have changed name and location in the last few releases on the Fortran
>>distribution. I hadn't noticed as I have mostly been using the AMPL
>>interface lately.
>>
>>To summarize, there are two files to alter,
>>* the ipopt.liblist created by one of the IPOPT Makefiles and placed in
>>$MYCUTER/double/lib
>>* the CUTEr script $MYCUTER/bin/ipopt
>>
>>I have been playing with ipopt.liblist and it seems that libipcore.a
>>needs libiptron.a but libiptron.a also needs libipcore.a so that
>>regardless of the order in which the libs appear there are missing
>>symbols. The (brutal) workaround is to repeat libipcore twice in the
>>list. The file ipopt.liblist should look like this:
>>
>>-L$IPOPT/IPOPT/ipopt -lipcore -L$IPOPT/OTHERS/TRON -liptron
>>-L$IPOPT/IPOPT/ipopt -lipcore -L$IPOPT/OTHERS/HSL -liphsl -llapack
>>-L$IPOPT/OTHERS/blas -lipblas
>>
>>in that order, where $IPOPT is the directory where IPOPT is installed.
> 
> 
> Actually, those libraries libipcore.a, libiptron.a, libiphsl.a are
> "internal" libraries created during the Ipopt compilation process and
> should not be access by any user of Ipopt after a proper installation of
> Ipopt.
> 
> Instead, when you type 'make install', the Makefile will create a new
> library, simply called libipopt.a, which should include the content of all
> those "internal" libraries (libipcore.a, libiptron.a, libiphsl.a) and put
> it (by default, unless one speficies the --prefix flag for configure) into
> the 'lib' subdirectory of the directory, where the Ipopt configure script
> was run.
> 
> Therefore, the ipopt.liblist should only have something in it like
> 
> -L$IPOPT/lib -lipopt
> 
> This is the content of the ipopt.liblist file that is automatically
> generated when you type 'make cuter' in the Ipopt directory (maybe it also
> contains -llapack and/or -lblas if LAPACK or BLAS was not compiled as part
> of the Ipopt compilation, but found on the system elsewhere)
> 
> One example of the intended usage of the libraries can be found in the
> Makefile in
> 
> EXAMPLES/Fortran_example
> 
> (after a make install)
> 
> 
>>Now in $MYCUTER/bin/ipopt we should have (line 168)
>>
>>SETENV SYSLIBS = "`cat $MYCUTER/double/lib/ipopt.liblist`"
>>
>>and a few lines below (line 182)
>>
>>SETENV PACKOBJ = ""  # nothing
> 
> 
> I guess this applies also for the automatically generated ipopt.liblist
> file and maybe this is all that Lihong has to change.
> 
> 
>>Andreas, shame on me, I haven't yet tried the C++ IPOPT. Does the CUTEr
>>interface also work with ipopt.liblist? If so, should it also be fixed?
> 
> 
> I included CUTEr scripts for the C++ version (called 'sdipo' and 'ipo'),
> which are automatically processes and copied when you type
> 
> make cuter
> 
> after a make install in the new C++ version.  I hope those scripts are
> along the lines that you would usually include in your CUTEr distribution.
> 
> So, for the new C++ verion of Ipopt, after you installed it (and had CUTEr
> installed before), the "CUTER scripts" sdipo and ipo should be in
> $MYCUTER/bin, and a user can solve SIF problems with the new Ipopt code by
> typing
> 
> sdipo FILE.SIF
> 
> I hope this helps,
> 
> Andreas
> 
> 



More information about the Coin-ipopt mailing list