由于 vowpal wabbit 对 boost 库的依赖而导致的错误
Posted
技术标签:
【中文标题】由于 vowpal wabbit 对 boost 库的依赖而导致的错误【英文标题】:Errors due to vowpal wabbit's dependencies on boost library 【发布时间】:2012-07-11 08:48:55 【问题描述】:我正在努力安装 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'
然后我通过指定 -L/usr/local/lib 在此处添加了指向 boost 库的链接
现在我收到以下错误:
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
【问题讨论】:
这(可能)更适合 SO。投票结束。 不过,我正在寻找使用过 vowpal wabbit 的人。 你有一个有效的boost
安装吗? program_options
库应该单独构建,如果我没记错的话。此外,-L
或-l
开关后不应有空格。
【参考方案1】:
我碰巧让一切都在 OS X 10.7 上运行,如下所示:
确保您的 Boost 安装工作正常。如Getting started页面所示,通常我们只需要头文件,但一些Boost库必须单独构建,包括用于处理来自命令行或配置文件的选项的program_options库。进入你的boost
文件夹,然后在你的shell提示符下:
$ ./bootstrap.sh
$ ./bjam
这将编译并构建所有内容。现在您的boost
目录中应该有一个bin.v2/
目录,其中包含为您的系统构建的所有库(静态库和线程库)。
$ ls bin.v2/libs/
date_time iostreams python serialization test
filesystem math random signals thread
graph program_options regex system wave
更重要的是,stage/lib/
目录中提供了额外的 Boost 库。对我来说,这些是Mach-O 64-bit dynamically linked shared library x86_64
。
包含路径 应该是your_install_dir/boost_x_xx_x
,其中boost_x_xx_x
是您工作的Boost 的基本名称。 (我个人在/usr/local/share/
中有boost_1_46_1
,我将它符号链接到/usr/local/share/boost
以避免记住版本号。)库路径(用于链接)应为your_install_dir/boost_x_xx_x/stage/lib
。但是,最好在通常的位置进行符号链接或复制(这是我所做的)所有内容,即 /usr/local/include/boost
用于头文件,/usr/local/lib
用于库。
编辑vowpal_wabbit
目录中的Makefile
,并更改包含/库路径以反映您当前的安装。 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
【讨论】:
【参考方案2】:您还可以使用brew 在 OS X 上安装 vowpal wabbit:
brew install vowpal-wabbit
或者你可以只安装 boost,然后从 github repo 安装 vw
。
brew install boost
【讨论】:
(+1) 是的,这就是我现在所做的,我肯定改用 Homebrew。 如果您使用 brew 安装 vowpal-wabbit,是否可以使用 vw-hypersearch 实用程序?我收到一条错误消息,指出“找不到命令”,但 vw 的其余部分工作正常。【参考方案3】:为了在 CentOS 7 上安装(6.5 perl 版本对于最新的 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
【讨论】:
以上是关于由于 vowpal wabbit 对 boost 库的依赖而导致的错误的主要内容,如果未能解决你的问题,请参考以下文章
Vowpal Wabbit 模型在使用像素 RGB 值对图像进行多类分类时效果不佳