“找不到 -lboost_filesystem”

“找不到 -lboost_filesystem”

Deluge 是一个 BitTorrent 客户端。我尝试从源代码构建它,因为我没有权限以 root 身份安装它。

我正在使用python setup.py build。但是,它失败了,如下所示,为什么?

copying deluge/ui/web/themes/images/gray/slider/slider-v-thumb.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/gray/slider
copying deluge/ui/web/themes/images/gray/slider/slider-thumb.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/gray/slider
copying deluge/ui/web/themes/images/gray/panel/top-bottom.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/gray/panel
copying deluge/ui/web/themes/images/gray/tabs/tab-strip-bg.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/gray/tabs
copying deluge/ui/web/themes/images/yourtheme/window/right-corners.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/window
copying deluge/ui/web/themes/images/yourtheme/window/left-corners.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/window
copying deluge/ui/web/themes/images/yourtheme/window/left-right.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/window
copying deluge/ui/web/themes/images/yourtheme/window/top-bottom.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/window
creating build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/slider
copying deluge/ui/web/themes/images/yourtheme/slider/slider-v-thumb.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/slider
copying deluge/ui/web/themes/images/yourtheme/slider/slider-thumb.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/slider
copying deluge/ui/web/themes/images/yourtheme/slider/slider-bg.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/slider
copying deluge/ui/web/themes/images/yourtheme/slider/slider-v-bg.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/slider
copying deluge/ui/web/themes/images/yourtheme/panel/top-bottom.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/panel
copying deluge/ui/web/themes/images/yourtheme/grid/hmenu-lock.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/grid
copying deluge/ui/web/themes/images/yourtheme/grid/hmenu-unlock.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/grid
copying deluge/ui/web/themes/images/yourtheme/tabs/tab-strip-bg.png -> build/lib.linux-x86_64-2.4/deluge/ui/web/themes/images/yourtheme/tabs
running build_ext
building 'libtorrent' extension
gcc -pthread -shared -L/usr/lib64 -L/opt/local/lib -lboost_filesystem -lboost_date_time -lboost_iostreams -lboost_python -lboost_thread -lpthread -lssl -lz -o build/lib.linux-x86_64-2.4/deluge/libtorrent.so
/usr/bin/ld: cannot find -lboost_filesystem
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
[mirror@innov deluge-1.3.5]$ echo $?
1

编辑1:gcc版本和操作系统信息

$(which gcc) --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


cat /etc/issue
CentOS release 5.7 (Final)
Kernel \r on an \m

编辑2: boost 被 deluge 中的 setup.py 引用

114     if OS == "linux":
115         if os.path.exists(os.path.join(sysconfig.get_config_vars()['LIBDIR'], \
116             'libboost_filesystem-mt.so')):
117             boost_filesystem = "boost_filesystem-mt"
118         elif os.path.exists(os.path.join(sysconfig.get_config_vars()['LIBDIR'], \
119             'libboost_filesystem.so')):
120             boost_filesystem = "boost_filesystem"
121         if os.path.exists(os.path.join(sysconfig.get_config_vars()['LIBDIR'], \
122             'libboost_date_time-mt.so')):
123             boost_date_time = "boost_date_time-mt"
124         elif os.path.exists(os.path.join(sysconfig.get_config_vars()['LIBDIR'], \
125             'libboost_date_time.so')):
126             boost_date_time = "boost_date_time"
127         if os.path.exists(os.path.join(sysconfig.get_config_vars()['LIBDIR'], \
128             'libboost_thread-mt.so')):
129             boost_thread = "boost_thread-mt"
130         elif os.path.exists(os.path.join(sysconfig.get_config_vars()['LIBDIR'], \
131             'libboost_thread.so')):
132             boost_thread = "boost_thread"
133
134         if 'boost_filesystem' not in vars():
135             boost_filesystem = "boost_filesystem-mt"
136         if 'boost_date_time' not in vars():
137             boost_date_time = "boost_date_time-mt"
138         if 'boost_thread' not in vars():
139             boost_thread = "boost_thread-mt"
140
141     elif OS == "freebsd":
142         boost_filesystem = "boost_filesystem"
143         boost_date_time = "boost_date_time"
144         boost_thread = "boost_thread"
145     else:
146         boost_filesystem = "boost_filesystem-mt"
147         boost_date_time = "boost_date_time-mt"
148         boost_thread = "boost_thread-mt"
149
150     librariestype = [boost_filesystem, boost_date_time,
151             boost_thread, 'z', 'pthread', 'ssl', 'crypto']

答案1

您的答案就在错误信息中:

/usr/bin/ld: cannot find -lboost_filesystem
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

具体来说这一行:/usr/bin/ld:找不到 -lboost_filesystem。链接器无法解析其中一个依赖项。它正在寻找boost_filesystem库,但找不到它。您需要确保促进已安装,并且如果您必须在本地安装它,也许可以将构建配置为指向 boost 的本地安装。

相关内容