Почему autoconf неправильно определяет повышение?

Я использую autoconf для обнаружения библиотек повышения с поддержкой макросов autoconf-archive, и они отлично работают с общесистемными библиотеками повышения, но терпят неудачу, если я вручную скомпилирую повышение в своем домашнем каталоге:

sb@stephane:~/devel/spectra2$ ./configure --with-boost=/home/sb/local/
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for library containing strerror... none required
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for boostlib >= 1.31.0... yes
checking whether the Boost::Program_Options library is available... yes
checking for exit in -lboost_program_options... yes
checking whether the Boost::Filesystem library is available... yes
checking for exit in -lboost_filesystem... no
checking for exit in -lboost_filesystem... (cached) no
checking for exit in -lboost_filesystem... (cached) no
configure: error: Could not link against boost_filesystem !

Как видите, некоторые библиотеки он определяет нормально, но не работает с boost-filesystem. Это содержимое ~/local/lib:

sb@stephane:~$ ls -1 /home/sb/local/lib/
libboost_filesystem.a
libboost_filesystem.so
libboost_filesystem.so.1.42.0
libboost_program_options.a
libboost_program_options.so
libboost_program_options.so.1.42.0
libboost_system.a
libboost_system.so
libboost_system.so.1.42.0
libboost_thread.a
libboost_thread.so
libboost_thread.so.1.42.0

Итак, библиотека есть. Я пробовал как с boost-1.39, так и с boost-1.42 без каких-либо изменений, есть идеи, почему это происходит? Я что-то забыл?


person Kjir    schedule 05.03.2010    source источник


Ответы (2)


Поскольку boost-1.39 libboost_filesystem зависит от libboost_system. До 1.39 вы могли ссылаться только на boost_filesystem, в более поздних версиях вы должны ссылаться на них обоих.

Возможно, это как-то связано с вашей ошибкой.

person Dmitry Yudakov    schedule 05.03.2010
comment
Ваша догадка верна: boost-system установлена ​​и в configure.ac есть ее проверка, но это было после проверки boost-filesystem. Если я переключаю порядок, все работает как задумано. Это также небольшая проблема с документацией в autoconf-архиве. - person Kjir; 05.03.2010
comment
@Dmitry Yudakov Пожалуйста, предоставьте ссылку/ссылку на ваше заявление. - person Qsiris; 23.08.2013

Я обнаружил, что boost.m4 намного надежнее, чем макросы Boost, доступные на Autoconf. Архив макросов. Возможно, вам повезет, если вы просто перейдете на boost.m4.

person Rhys Ulerich    schedule 06.03.2010