[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