autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

library checks are driving me crazy!


From: aaragon
Subject: library checks are driving me crazy!
Date: Sun, 23 Mar 2008 21:14:16 -0700 (PDT)

Hello everyone,

After 2 hours of trying to make the configure script find three libraries, I
decided to ask someone before I throw my computer through the window. This
is the picture: my code uses three libraries, and these are installed in
non-standard directories (under $HOME/Lib). I'm using CGAL, loki, superlu
and blas. So, I configure my code with the following command:

./configure CXX=g++-mp-4.3 CXXFLAGS="-I$HOME/Lib/loki/include
-I$HOME/Lib/CGAL/include -I$HOME/Lib/SuperLU" LDFLAGS="-L$HOME/Lib/loki/lib
-L$HOME/Lib/CGAL/lib -L$HOME/Lib/SuperLU" LIBS="-lblas -lsuperlu_3.0 -lCGAL
-lloki"

So you see I'm using a different version for the C++ compiler than that of
the system. I also include the include paths and paths were all the
libraries are. So when I try to compile the code I get:

Undefined symbols:
  "_dtrsv__", referenced from:
      _sp_dtrsv in libsuperlu_3.0.a(dsp_blas2.o)
      _sp_dtrsv in libsuperlu_3.0.a(dsp_blas2.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status

Those symbols belong to the blas library. So it turns out that superlu
depends on the blas library. I compiled superlu with its own blas library so
the libblas.a is also in the same directory where libsuperlu_3.0.a is. So I
don't understand what's going on. I found that the blas library is also
installed in the system in /usr/lib:

>$ ls /usr/lib/*blas*/usr/lib/libblas.dylib     /usr/lib/libcblas.dylib

so probably it's trying to find the symbols in the wrong library?

Now, when I hard-code the blas library in the Makefile.am, my code compiles
fine:

noinst_PROGRAMS = fem.out
fem_out_SOURCES = $(cxx_sources) main.cxx
fem_out_LDADD = libxfem.a /Users/aaragon/Lib/SuperLU/libblas.a

But of course this is a bad hack.

Then, I tried for a long time to make the macros detect the libraries, but
not a single success!

AC_SEARCH_LIBS([dgemm], [blas cblas],,[echo "ERROR: Could not blas library"
&& exit 1])
# I think the macro above detects the one installed in the system
AC_SEARCH_LIBS([dCreate_CompCol_Matrix], [superlu_3.0 superlu],,[echo
"ERROR: Could not find superlu" && exit 1])
# I cannot get anything from the call above

AC_CHECK_LIB([superlu_3.0],[_dCreate_CompCol_Matrix],,"echo ERROR: superlu
not found." && exit 1)
#another attempt, failure

Why are the macros not detecting the libraries? I specify in the command
line the paths were the libraries are, so I guess they should be taken into
account when these macros search, right? Am I missing something???

Please help!!! Thank you,

aa

-- 
View this message in context: 
http://www.nabble.com/library-checks-are-driving-me-crazy%21-tp16245235p16245235.html
Sent from the Gnu - Autoconf - General mailing list archive at Nabble.com.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]