autoconf
[Top][All Lists]
Advanced

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

Re: library search test fails, please help


From: aaragon
Subject: Re: library search test fails, please help
Date: Sun, 22 Feb 2009 16:03:37 -0800 (PST)



Allan Caffee wrote:
> 
> On Sat, 21 Feb 2009, aaragon wrote:
>> I found working with autoconf sometimes very frustrating. 
> 
> Let's see if we can't change that.  :)
> 
>>This is an
>> example. I want to check for a particular static library that I created.
>> Thus, I put the following in the configure.ac file
>> 
>> AC_CHECK_LIB([cpputils], [flip],,[AC_MSG_ERROR(library cpputils not
>> found)],,)
>> 
>> The result for this test is (in config.log):
>> 
>> configure:15746: checking for flip in -lcpputils
>> configure:15781: g++-mp-4.3 -g -O3 -o conftest -g -O2
>> -I/Users/aaragon/Lib/include -L/Users/aaragon/Lib/lib conftest.cpp
>> -lcpputils   >&5
>> Undefined symbols:
>>   "_flip", referenced from:
>>       _main in ccZZadrT.o
>> ld: symbol(s) not found
>> collect2: ld returned 1 exit status
>> [...]
>> So can someone tell me why is this happening? The result of the test
>> doesn't
>> make any sense. Thanks for the help,
> 
> AC_CHECK_LIB (AFAIK) is not intended to handle static libraries.  The
> reason for this is that compilers handle static libraries quite
> differently than shared object libraries.  Compilers treat static
> libraries as a single big object file to be included along with all the
> others.  For example to compile the test program you would use something
> like:
> 
> g++-mp-4.3 -o conftest -g -O2 -I/Users/aaragon/Lib/include
> /Users/aaragon/Lib/lib/cpputils.a conftest.cpp
> 
> I don't know of a way that's built into Autoconf to handle static libs
> this way.  The way I usually handle it is with something like this:
> 
> ## Provide commandline flags to allow users to override the default path
> ## to this static library.
> AC_ARG_WITH([cpputils],
> [AS_HELP_STRING([--with-cpputils=<DIR>],
> [override the default path to cpputils library])],
> [
> if test x"$withval" != x"no"
>       cpputils_suggested_dir=$withval;
> fi
> ],[])
> 
> AC_MSG_CHECKING([for libcpputils.a])
> if test -f "$cpputils_suggested_dir/lib/libcpputils.a"; then
>    CPPUTILS_STATIC_LIB="$cpputils_suggested_dir/lib/libcpputils.a"
>    CPPUTILS_CFLAGS="-I$cpputils_suggested_dir/include"
> else
>    CPPUTILS_STATIC_LIB="/Users/aarogon/Lib/lib/cpputils.a"
>    CPPUTILS_CFLAGS="-I/Users/aarogon/Lib/include"
> fi
> 
> Then you can just add @CPPUTILS_STATIC_LIB@ and @CPPUTILS_CFLAGS@ into
> your Makefile.in (or Makefile.am if you use Automake).  Hope that helps!
> 
> Aside to the developers:
> 
> This seems to be a recurring issue on this list.  We should really
> document this limitation of AC_CHECK_LIB and (maybe) provide a
> replacement macro.  Thoughts?
> 
> Cheers,
> Allan
> 
> 
> 
> _______________________________________________
> Autoconf mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/autoconf
> 
> 

Alright, so I decided to go ahead and use shared libraries instead. So now I
added  AC_DISABLE_STATIC to configure.ac inside the cpputils project and
then in Makefile.am it changed to

lib_LTLIBRARIES = libcpputils.la
libcpputils_la_SOURCES = $(cxx_sources)

After installation of the library, I get:

address@hidden:~/Lib/lib$ ls 
libcpputils.la  libcpputils.so  libcpputils.so.0  libcpputils.so.0.0.0

Now I go to the other project (that uses this library), and again I try to
use the macros AC_SEARCH_LIBS([flip], [cpputils],,[AC_MSG_ERROR(library
cpputils not found)]) and  AC_CHECK_LIB([cpputils],
[flip],,[AC_MSG_ERROR(library cpputils not found)],,)

They both failed again and I have no clue why this time, since these macros
are supposed to work for shared libraries.

Any ideas?

aa
-- 
View this message in context: 
http://www.nabble.com/library-search-test-fails%2C-please-help-tp22140739p22153515.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]