Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I troubleshoot boost library/header inclusion via autoconf/automake?
    primarykey
    data
    text
    <p>I'm new to autom4te, and I'm trying to use autoconf/automake to build and link a C++ program on multiple architectures. Complicating the linking is the fact that the project requires boost (filesystem, system, program_options).</p> <p>I'm using boost.m4 (from <a href="http://github.com/tsuna/boost.m4/tree/" rel="nofollow noreferrer">http://github.com/tsuna/boost.m4/tree/</a>), and it seems to locate all the libraries and headers successfully.</p> <p>Unfortunately, linking still fails, leaving me confused.</p> <p>These are the relevant lines of <code>configure.ac</code>:</p> <pre><code>AC_CONFIG_MACRO_DIR([m4]) # ... AC_PROG_CXX AC_PROG_LIBTOOL # ... BOOST_REQUIRE([1.41.0]) BOOST_FILESYSTEM BOOST_SYSTEM BOOST_PROGRAM_OPTIONS # ... </code></pre> <p>And in <code>src/Makefile.am</code>:</p> <pre><code>bin_PROGRAMS = phenomatrix phenomatrix_CXXFLAGS = $(BOOST_CPPFLAGS) phenomatrix_LDFLAGS = $(BOOST_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_FILESYSTEM_LDFLAGS) $(BOOST_PROGRAM_OPTIONS_LDFLAGS) # $(BOOST_SYSTEM_LIB) $(BOOST_PROGRAM_OPTIONS_LIB) $(BOOST_FILESYSTEM_LIB) phenomatrix_LIBS = $(BOOST_SYSTEM_LIBS) $(BOOST_FILESYSTEM_LIBS) $(BOOST_PROGRAM_OPTIONS_LIBS) phenomatrix_SOURCES = adjacency_list.cpp distance.cpp genephene.cpp knearest.cpp marshall.cpp oracle.cpp type_shield.cpp avgmindist.cpp euclidean.cpp hypergeometric.cpp main.cpp mindist.cpp partialbayes.cpp utilities.cpp </code></pre> <p>These give no errors, and it even manages to find the libraries and headers:</p> <pre><code>checking for Boost headers version &gt;= 104100... yes checking for Boost's header version... 1_41 checking for the toolset name used by Boost for g++... gcc44 -gcc checking boost/system/error_code.hpp usability... yes checking boost/system/error_code.hpp presence... yes checking for boost/system/error_code.hpp... yes checking for the Boost system library... yes checking boost/filesystem/path.hpp usability... yes checking boost/filesystem/path.hpp presence... yes checking for boost/filesystem/path.hpp... yes checking for the Boost filesystem library... yes checking for boost/system/error_code.hpp... (cached) yes checking for the Boost system library... (cached) yes checking boost/program_options.hpp usability... yes checking boost/program_options.hpp presence... yes checking for boost/program_options.hpp... yes checking for the Boost program_options library... yes </code></pre> <p>But then, when I run <code>make</code>, I get errors:</p> <pre><code>libtool: link: g++ -g -O2 -o phenomatrix phenomatrix-adjacency_list.o phenomatrix-distance.o phenomatrix-genephene.o phenomatrix-knearest.o phenomatrix-marshall.o phenomatrix-oracle.o phenomatrix-type_shield.o phenomatrix-avgmindist.o phenomatrix-euclidean.o phenomatrix-hypergeometric.o phenomatrix-main.o phenomatrix-mindist.o phenomatrix-partialbayes.o phenomatrix-utilities.o -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib phenomatrix-adjacency_list.o: In function `__static_initialization_and_destruction_0': /usr/local/include/boost/system/error_code.hpp:208: undefined reference to `boost::system::get_system_category()' /usr/local/include/boost/system/error_code.hpp:209: undefined reference to `boost::system::get_generic_category()' /usr/local/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::get_generic_category()' /usr/local/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::get_generic_category()' /usr/local/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::get_system_category()' </code></pre> <p>which repeat ad nauseum.</p> <p>I'm not even sure how to go about testing to see if it's including the right directories. Yes, I understand that there's a <code>-t</code> flag on g++, but I don't exactly know how to pass that (from within autom4te).</p> <p>I gather this has something to do with multiple versions of the boost libs and headers on the same machine, and there's not much I can do about that.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload