Ошибки из-за зависимостей vowpal wabbit от библиотеки boost

Я изо всех сил пытаюсь установить vowpal wobbit, и он терпит неудачу, когда я запускаю файл make, бросая:

    cd library; make; cd .. 
    g++ -g -o ezexample temp2.cc -L ../vowpalwabbit -l vw -l allreduce -l boost_program_options -l z -l pthread 
    ld: library not found for -lboost_program_options collect2: ld returned 1   exit status make[1]: *** [ezexample] Error 1'

Затем я добавил сюда ссылки на библиотеку boost, указав -L/usr/local/lib

Теперь я получаю следующую ошибку:

    g++ -g -o ezexample temp2.cc -L/usr/local/lib ../vowpalwabbit -l vw -l  allreduce -l boost_program_options -l z -l pthread 
    ld: library not found for -lvw
    collect2: ld returned 1 exit status   
    make: *** [ezexample] Error 1

person madCode    schedule 11.07.2012    source источник
comment
Это (вероятно) лучше подходит для SO. Голосование за закрытие.   -  person cardinal    schedule 11.07.2012
comment
Однако я ищу людей, которые использовали vowpal wabbit.   -  person madCode    schedule 11.07.2012
comment
У вас есть работающая установка boost? Библиотека program_options должна быть собрана отдельно, если я правильно понимаю. Кроме того, после переключателя -L или -l не должно быть пробела.   -  person chl    schedule 11.07.2012


Ответы (3)


Мне удалось заставить все работать на OS X 10.7 следующим образом:

  1. Убедитесь, что у вас есть работающая установка Boost. Как указано на странице Начало работы, обычно нам нужны только заголовочные файлы. , но некоторые библиотеки Boost необходимо собирать отдельно, включая библиотеку program_options, которая используется для обработки параметров из командной строки или файла конфигурации. Перейдите в свою папку boost, а затем в командной строке:

    $ ./bootstrap.sh
    $ ./bjam
    

    Это скомпилирует и построит все. Теперь у вас должен быть каталог bin.v2/ в каталоге boost со всеми встроенными библиотеками для вашей системы (статическими и потоковыми библиотеками).

    $ ls bin.v2/libs/
    date_time       iostreams       python          serialization   test
    filesystem      math            random          signals         thread
    graph           program_options regex           system          wave
    

    Что еще более важно, дополнительные библиотеки Boost доступны в каталоге stage/lib/. Для меня это Mach-O 64-bit dynamically linked shared library x86_64.

    включаемый путь должен быть your_install_dir/boost_x_xx_x, где boost_x_xx_x — это базовое имя вашего рабочего Boost. (Лично у меня есть boost_1_46_1 в /usr/local/share/, и я сделал символическую ссылку на /usr/local/share/boost, чтобы не помнить номер версии.) путь к библиотеке (для ссылки) должен читаться как your_install_dir/boost_x_xx_x/stage/lib. Тем не менее, может быть лучше сделать символическую ссылку или скопировать (что я и сделал) все в обычное место, то есть /usr/local/include/boost для заголовочных файлов и /usr/local/lib для библиотек.

  2. Отредактируйте Makefile из каталога vowpal_wabbit и измените пути include/library, чтобы отразить вашу текущую установку. Makefile должно выглядеть так (первые 12 строк):

    COMPILER = g++
    UNAME := $(shell uname)
    
    ifeq ($(UNAME), FreeBSD)
    LIBS = -l boost_program_options -l pthread -l z -l compat
    BOOST_INCLUDE = /usr/local/include
    BOOST_LIBRARY = /usr/local/lib
    else
    LIBS = -l boost_program_options -l pthread -l z
    BOOST_INCLUDE = /usr/local/share/boost            # change path to reflect yours
    BOOST_LIBRARY = /usr/local/share/boost/stage/lib  # idem
    endif
    

    Теперь вы готовы скомпилировать vowpal_wabbit (make clean, если вы уже скомпилировали его):

    $ make
    $ ./vw --version
    6.1
    $ make test
    
person chl    schedule 11.07.2012

Вы также можете установить vowpal wabbit на OS X, используя brew:

brew install vowpal-wabbit

Или вы можете просто установить boost, а затем установить vw из репозитория github.

brew install boost
person Zach    schedule 31.03.2014
comment
(+1) Да, это то, что я сделал сейчас, когда я определенно переключился на Homebrew. - person chl; 14.08.2014
comment
Можно ли использовать утилиту vw-hypersearch, если вы устанавливаете vowpal-wabbit вместе с brew? Я получаю сообщение об ошибке, в котором говорится, что команда не найдена, но остальная часть vw работает нормально. - person Vivek Subramanian; 24.07.2015

Для установки на CentOS 7 (версия perl 6.5 слишком старая для последней версии исходного кода vw) я нашел инструкции по адресу http://wkoplitz.blogspot.be/2012/12/vowpal-wabbit-on.-centos.html для нормальной работы:

yum install zlib-devel boost-devel

yum groupinstall "Development Tools"

git clone git://github.com/JohnLangford/vowpal_wabbit.git

cd vowpal_wabbit

./autogen.sh

make

make test
person herman    schedule 17.09.2014