Search code examples
gccboostautotoolsautoconf

Howto add a link to a library in autoconf configure script / makefile


I am an autotools newb and I have difficulties figuring out howto easily link a specific library into one of the configured targets.

I have a source package that I want to build the usual way: ./configure && make && make install

Unfortunately one of the cpps has a missing reference to another library. Compiling it by hand (adjusting the commandline) works. But I would rather "patch" the compile script. Where is the standard place to edit linking references?

 undefined reference to `boost::system::get_system_category()

That is my error message btw.


Solution

  • You need to add the relevant -l flag to AM_LDFLAGS in Makefile.am; e.g.:

    AM_LDFLAGS = -lboost_system-mt
    

    Note that Boost libraries generally end in a suffix—a sequence of letters that indicates the build configuration. In the above example, the suffix is -mt. This could be different in your installation (though the -mt variant is commonly available on POSIXy systems, IME).

    I do something like this:

    AM_LDFLAGS = -lboost_system$(BOOST_LIB_SUFFIX)
    

    BOOST_LIB_SUFFIX is a precious variable (see AC_ARG_VAR) that defaults to -mt.