Hi Andreas,<div><br></div><div>Thanks for your reply! got me past the configure stage, but my make still fails.</div><div><br></div><div>1) I modified my configure statement to read as follows: (the options -lblas and -llapack seemed to pick up the BLAS and Lapack in ThirdParty/, not the ATLAS libraries)</div>
<div><div><br></div><div>./configure --with-blas="/usr/lib/atlas-base/atlas/libblas.so.3gf" \</div>
<div><span style="white-space:pre-wrap">                        </span>--with-lapack="/usr/lib/atlas-base/atlas/liblapack.so.3gf"</div></div><div><div><br></div></div><div>The configure worked fine:</div><div>========================================================================</div>
<div><snipped></div><div><div><div>checking whether user supplied BLASLIB="/usr/lib/atlas-base/atlas/libblas.so.3gf.0" works... yes: /usr/lib/atlas-base/atlas/libblas.so.3gf.0</div><div>checking whether user supplied LAPACKLIB="/usr/lib/atlas-base/atlas/liblapack.so.3gf.0" works... yes: /usr/lib/atlas-base/atlas/liblapack.so.3gf.0 /usr/lib/atlas-base/atlas/libblas.so.3gf.0</div>
</div></div><div><snipped></div><div>========================================================================</div><div><br></div><div><br></div><div>2) However, the "make" process still fails.</div>
<div>========================================================================</div><div><snipped></div><div><div>../../Interfaces/.libs/libipopt.a(IpLapack.o): In function `Ipopt::IpLapackDpotrs(int, int, double const*, int, double*, int)':</div>
<div>IpLapack.cpp:(.text+0x50): undefined reference to `dpotrs_'</div><div>../../Interfaces/.libs/libipopt.a(IpLapack.o): In function `Ipopt::IpLapackDpotrf(int, double*, int, int&)':</div><div>IpLapack.cpp:(.text+0x90): undefined reference to `dpotrf_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpLapack.o): In function `Ipopt::IpLapackDsyev(bool, int, double*, int, double*, int&)':</div><div>IpLapack.cpp:(.text+0x124): undefined reference to `dsyev_'</div><div>IpLapack.cpp:(.text+0x27c): undefined reference to `dsyev_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpLapack.o): In function `Ipopt::IpLapackDgetrf(int, double*, int*, int, int&)':</div><div>IpLapack.cpp:(.text+0x2dc): undefined reference to `dgetrf_'</div><div>../../Interfaces/.libs/libipopt.a(IpLapack.o): In function `Ipopt::IpLapackDgetrs(int, int, double const*, int, int*, double*, int)':</div>
<div>IpLapack.cpp:(.text+0x348): undefined reference to `dgetrs_'</div><div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDdot(int, double const*, int, double const*, int)':</div><div>IpBlas.cpp:(.text+0x21): undefined reference to `ddot_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDnrm2(int, double const*, int)':</div><div>IpBlas.cpp:(.text+0x47): undefined reference to `dnrm2_'</div><div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDasum(int, double const*, int)':</div>
<div>IpBlas.cpp:(.text+0x67): undefined reference to `dasum_'</div><div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasIdamax(int, double const*, int)':</div><div>IpBlas.cpp:(.text+0x87): undefined reference to `idamax_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDcopy(int, double const*, int, double*, int)':</div><div>IpBlas.cpp:(.text+0xb1): undefined reference to `dcopy_'</div><div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDaxpy(int, double, double const*, int, double*, int)':</div>
<div>IpBlas.cpp:(.text+0xf2): undefined reference to `daxpy_'</div><div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDscal(int, double, double*, int)':</div><div>IpBlas.cpp:(.text+0x125): undefined reference to `dscal_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDgemv(bool, int, int, double, double const*, int, double const*, int, double, double*, int)':</div><div>IpBlas.cpp:(.text+0x1d6): undefined reference to `dgemv_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDsymv(int, double, double const*, int, double const*, int, double, double*, int)':</div><div>IpBlas.cpp:(.text+0x25f): undefined reference to `dsymv_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDgemm(bool, bool, int, int, int, double, double const*, int, double const*, int, double, double*, int)':</div><div>IpBlas.cpp:(.text+0x36a): undefined reference to `dgemm_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDsyrk(bool, int, int, double, double const*, int, double, double*, int)':</div><div>IpBlas.cpp:(.text+0x41b): undefined reference to `dsyrk_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpBlas.o): In function `Ipopt::IpBlasDtrsm(bool, int, int, double, double const*, int, double*, int)':</div><div>IpBlas.cpp:(.text+0x4fe): undefined reference to `dtrsm_'</div>
<div>../../Interfaces/.libs/libipopt.a(IpMa28Partition.o): In function `ma28part_':</div><div>IpMa28Partition.F:(.text+0x156): undefined reference to `dcopy_'</div><div>/home/usual/INSTALLDIRS/Ipopt310/ThirdParty/HSL/.libs/libcoinhsl.a(ma57ad.o): In function `mc71ad_':</div>
<div>ma57ad.f:(.text+0xb0a8): undefined reference to `idamax_'</div><div>ma57ad.f:(.text+0xb2e3): undefined reference to `idamax_'</div><div>/home/usual/INSTALLDIRS/Ipopt310/ThirdParty/HSL/.libs/libcoinhsl.a(ma57ad.o): In function `ma57td_':</div>
<div>ma57ad.f:(.text+0xc9e2): undefined reference to `dgemm_'</div><div>ma57ad.f:(.text+0xca97): undefined reference to `dtpsv_'</div><div>/home/usual/INSTALLDIRS/Ipopt310/ThirdParty/HSL/.libs/libcoinhsl.a(ma57ad.o): In function `ma57rd_':</div>
<div>ma57ad.f:(.text+0xd6d6): undefined reference to `dgemm_'</div><div>ma57ad.f:(.text+0xd765): undefined reference to `dtpsv_'</div><div>/home/usual/INSTALLDIRS/Ipopt310/ThirdParty/HSL/.libs/libcoinhsl.a(ma57ad.o): In function `ma57yd_':</div>
<div>ma57ad.f:(.text+0xe06e): undefined reference to `dgemv_'</div><div>ma57ad.f:(.text+0xe0b8): undefined reference to `dtpsv_'</div><div>/home/usual/INSTALLDIRS/Ipopt310/ThirdParty/HSL/.libs/libcoinhsl.a(ma57ad.o): In function `ma57qd_':</div>
<div>ma57ad.f:(.text+0xe7ae): undefined reference to `dtpsv_'</div><div>ma57ad.f:(.text+0xec86): undefined reference to `dgemm_'</div><div>/home/usual/INSTALLDIRS/Ipopt310/ThirdParty/HSL/.libs/libcoinhsl.a(ma57ad.o): In function `ma57xd_':</div>
<div>ma57ad.f:(.text+0xedfa): undefined reference to `dtpsv_'</div><div>ma57ad.f:(.text+0xf1f9): undefined reference to `dgemv_'</div><div>/home/usual/INSTALLDIRS/Ipopt310/ThirdParty/HSL/.libs/libcoinhsl.a(ma57ad.o): In function `ma57od_':</div>
<div>ma57ad.f:(.text+0x1517c): undefined reference to `dgemm_'</div><div>ma57ad.f:(.text+0x163a2): undefined reference to `dgemm_'</div><div>ma57ad.f:(.text+0x16478): undefined reference to `dgemm_'</div><div>
collect2: ld returned 1 exit status</div><div>make[3]: *** [ipopt] Error 1</div><div>make[3]: Leaving directory `/home/usual/INSTALLDIRS/Ipopt310/Ipopt/src/Apps/AmplSolver'</div><div>make[2]: *** [all-recursive] Error 1</div>
<div>make[2]: Leaving directory `/home/usual/INSTALLDIRS/Ipopt310/Ipopt/src/Apps'</div><div>make[1]: *** [all-recursive] Error 1</div><div>make[1]: Leaving directory `/home/usual/INSTALLDIRS/Ipopt310/Ipopt'</div></div>
<div><div>========================================================================</div><div></div></div><div><br></div><div>If one were to do an 'nm' on the static library, one notices for instance that the dgemm symbol clearly exists.</div>
<div><div><div>========================================================================</div><div></div></div></div><div>% nm /usr/lib/atlas-base/atlas/libblas.a | grep dgemm</div><div><div>0000000000000000 T atl_f77wrap_dgemm_</div>
<div>ATL_dgemm.o:</div><div>0000000000000000 T ATL_dgemm</div><div>dgemm.o:</div><div> U atl_f77wrap_dgemm_</div></div><div><div><div>========================================================================</div>
<div></div></div></div><div><br></div><div>I'm baffled!</div><div><br></div><div>David</div><div><br></div><div><br></div><div><div class="gmail_quote">On Wed, Feb 15, 2012 at 10:12 PM, Andreas Waechter <span dir="ltr"><<a href="mailto:awaechter.iems@gmail.com" target="_blank">awaechter.iems@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi David,<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I was wondering if anyone here running Ubuntu has managed to successfully compile IPOPT 3.10 with the system-packaged ATLAS?<br>
<br>
I'm running Ubuntu 11.10 64-bit.<br>
</blockquote>
<br></div>
I'm running the same OS.<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
In previous versions of Ubuntu, all I had to do was to link against libblas.so.3 and liblapack.so.3 provided by the package libatlas-dev-sse2. However, this package has been removed and replaced with a new package called libatlas-base-dev (ATLAS 3.8.4), which provides two new libraries named libf77blas.so and liblapack_atlas.so.<br>
<br>
IPOPT's configure script accepts libf77blas.so but fails for liblapack_atlas.so.<br>
<br>
1) Could it be that the new liblapack_atlas.so does not have the LAPACK routines that IPOPT needs?<br>
2) Are there any workarounds or do I have to compile my own ATLAS from scratch?<br>
</blockquote>
<br></div>
I have the same package installed (libatlas-base-dev). If I understand correctly, all you have to do is to link with -lblas and -llapack. Your "alternatives configurator" should be set up automatically to pick up<br>
<br>
/usr/lib/atlas-base/atlas/<u></u>libblas.so.3gf and<br>
/usr/lib/atlas-base/atlas/<u></u>liblapack.so.3gf<br>
<br>
If you look at the symbols in the static versions of those libraries (e.g., nm /usr/lib/atlas-base/atlas/<u></u>libblas.a) you will see the atlas symbols ATL_... I guess this setup is meant to be a very convenient way to link with Atlas by just using -lblas and -llapack.<br>
<br>
Hope this is correct, and hopeful,<br>
<br>
Andreas<br>
<br>
</blockquote></div><br></div>