安装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 distclean
则make 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