安装pycuda 2011.2.2时出现“/usr/bin/ld:无法找到-lboost_python-mt”错误

安装pycuda 2011.2.2时出现“/usr/bin/ld:无法找到-lboost_python-mt”错误

我正在 ubuntu 11.10 上安装 pycuda2011.2.2,但无法完成。当我这样做时pycuda-2011.2.2 $ make -j 4

我收到此错误:

/usr/bin/ld: cannot find -lboost_python-mt    ,
/usr/bin/ld: cannot find -lcuda

我在谷歌搜索和解决方案中也找到了 1 个完全匹配的问题:

 $ sudo ln -s /usr/lib/libboost_python-mt-py26 /usr/lib/libboost_python-mt

但是,我的问题并没有消失。

我很纳闷,为什么谷歌搜索没有相关结果,好像只有我才有这个问题。出了什么问题?任何帮助我都感激不尽。

谢谢,

答案1

您似乎缺少两个库,需要先安装它们。

Boost.Python

这是由libboost-python和 `` 提供的。或者作为这些说明比如,要安装这个和其他一些先决条件(根据您的错误消息,您可能已经或可能还没有),请运行:

sudo apt-get install build-essential python-dev python-setuptools libboost-python-dev libboost-thread-dev -y

(我不建议遵循全部但是,您必须从头到尾严格遵循该页面上的说明,因为它们不是针对 Ubuntu 11.10 编写的,并且您不需要(也可能不想)将您的系统设置为使用比官方提供的更旧的编译器。)

通用计算架构

如果你已经从 Nvidia 网站下载了 CUDA 并安装了它,那么你只需要指定位置:

./configure.py --cuda-root=/where/ever/you/installed/cuda

(参见 pycuda 的通用指令页面了解详情。

在执行此操作之前,您可能需要从头开始或运行make distclean(或make clean如果make distclean无法识别)。

如果你尚未下载并安装 CUDA,你可以在 Nvidia 网站上进行下载和安装。具体来说,这一页,获取适用于 Ubuntu 11.04 的 32 位或 64 位版本的 CUDA 工具包(这是最接近您系统的可用版本,并且可能会起作用)。如果您不确定安装的是 32 位还是 64 位版本的 Ubuntu,请运行uname -m。如果显示x86_64,则说明您拥有 64 位版本;否则,您拥有 32 位版本。还请获取开发驱动程序和 SDK。

快速链接(32 位):工具包 驱动程序 软件开发工具包
快速链接(64 位):工具包 驱动程序 软件开发工具包

答案2

Eliah 对此修复的看法是正确的-lcuda。您还可以将 cuda lib 目录的位置添加到LD_LIBRARY_PATH.

至于问题libboost-python,请重新运行./configurepycuda 的命令通用指令并替换--boost-python-libname=boost_python-mt--boost-python-libname=boost_python-mt-py26

答案3

elzirac 的解决方案对我来说最有效。总体而言,在 Ubuntu 12.04 上对我有用的安装工作流程是:

确保系统默认使用python 2.7.x:

python --version    

(应该说 Python 2.7.x)

消除旧的 Nvidia 驱动程序并安装 CUDA 5.5 先决条件:

sudo apt-get remove --purge nvidia*    
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev    

安装 CUDA 5.5:

wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1204/x86_64/cuda-repo-ubuntu1204_5.5-0_amd64.deb    
sudo dpkg -i cuda-repo-ubuntu1204_5.5-0_amd64.deb    
sudo apt-get update    
sudo apt-get install cuda    

更新 CUDA 5.5 环境变量:

sudo echo "/usr/local/cuda-5.0/lib64" > /etc/ld.so.conf.d/cuda-5-5.conf    

使用文本编辑器将其附加:/usr/local/cuda-5.5/bin到 PATH 行的末尾/etc/environment

下载pycuda:

wget https://pypi.python.org/packages/source/p/pycuda/pycuda-2013.1.1.tar.gz

解压:

tar xvzf pycuda-2013.1.1.tar.gz    

安装:

cd pycuda-2013.1.1    

rm siteconf.py    

./configure.py --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python-mt-py27 --boost-thread-libname=boost_thread-mt --no-use-shipped-boost    
sudo make install    

测试pycuda安装:

cd test
python test_driver.py    

答案4

我也遇到了这个问题,不过是在 Ubuntu 12.04 上。我有一个类似于 max beckett 的答案的解决方案,但不是替换--boost-python-libname=boost_python-mt--boost-python-libname=boost_python-mt-py26--boost-python-libname=boost_python-mt-py27(请注意,“26”更改为“27”,具体取决于您拥有的 boost 版本)

检查一下你有什么提升:

ls /usr/lib/libboost_python*

./configure在最终做出决定时,这一情况被改变了:

./configure.py --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python-mt-py27 --boost-thread-libname=boost_thread-mt --no-use-shipped-boost

如果你已经运行了./configure,你需要删除./siteconf.py

相关内容