安装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 

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

这让我想知道为什么谷歌搜索没有相关结果,好像只有我有这个问题。 怎么了 ? 任何帮助表示赞赏。

谢谢,

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

Boost.Python的

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

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

(我不建议按照该页面上的所有说明从头到尾,但是,因为它们不是用Ubuntu 11.10编写的,你不需要,也可能不想要,设置您的系统最多使用比正式提供的旧编译器。)

CUDA

如果您已经从Nvidia的网站下载了CUDA并进行了安装,那么您只需要指定:

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

(有关详细信息,请参阅pycuda的通用说明页。)

在此之前,您可能希望从头开始或运行make distclean (或者如果无法识别make distcleanmake clean )。

如果您尚未下载并安装CUDA,可以在Nvidia的网站上进行。 具体来说,在这个页面上 ,为Ubuntu 11.04获取32位或64位版本的CUDA工具包(这是最接近你的系统的,可能会有效)。 如果您不确定是否安装了32位或64位版本的Ubuntu,请运行uname -m 。 如果它说x86_64 ,你有64位版本; 否则你有32位版本。 还要抓住开发驱动程序和SDK。

快速链接(32位): Toolkit Drivers SDK
快速链接(64位): Toolkit Drivers SDK

-lcuda关于-lcuda修复问题。 您还可以将cuda lib目录的位置添加到LD_LIBRARY_PATH

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

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附加到/etc/environment PATH行的末尾

下载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 

问题解决了。 我在这个主题中找到了答案: http : //forums.nvidia.com/index.php?showtopic = 2246718&st = 0#entry1413660

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

检查你有什么提升:

 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