【问题标题】:clang error - CUDA directory not found on OSX Mavericksclang 错误 - 在 OSX Mavericks 上找不到 CUDA 目录
【发布时间】:2014-05-18 03:09:24
【问题描述】:

我正在尝试在 MacBook Pro 15 英寸视网膜上的 OSX Maverics 下使用 Python 安装一个名为 PyCUDA 的 CUDA 包,但是在尝试编译文件时出现以下错误:

ld: warning: directory not found for option '-F /Library/Frameworks -framework CUDA'
ld: file not found: @rpath/CUDA.framework/Versions/A/CUDA for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'g++' failed with exit status 1

我认为在这个阶段 PyCUDA 正在尝试编译它的一些 C 组件。

我在网上研究了这个错误,提出的解决方案是将 -F/Library/Frameworks 和 -framework CUDA 添加到参数列表中,但是 make 仍然失败并出现上述错误。

我安装了 CUDA 5.5 和 Xcode 命令行工具。我也正在使用命令行(不是 Xcode)安装:

python setup.py install

然后调用 clang 来编译一些组件。

我认为路径的@rpath 部分处理不正确。

有什么办法可以解决这个错误?

【问题讨论】:

    标签: python macos cuda clang pycuda


    【解决方案1】:

    我遇到了类似的错误,但我设法使用它安装了 pycuda http://wiki.tiker.net/PyCuda/Installation/Mac

    特别是我按照说明中的说明使用了 siteconf.py。

    BOOST_INC_DIR = []                                                              
    BOOST_LIB_DIR = []                                                              
    BOOST_COMPILER = 'gcc43'                                                        
    USE_SHIPPED_BOOST = True                                                        
    BOOST_PYTHON_LIBNAME = ['boost_python-py27']                                    
    BOOST_THREAD_LIBNAME = ['boost_thread']                                         
    CUDA_TRACE = False                                                              
    CUDA_ROOT = '/usr/local/cuda'                                                   
    CUDA_ENABLE_GL = False                                                          
    CUDA_ENABLE_CURAND = True                                                       
    CUDADRV_LIB_DIR = ['${CUDA_ROOT}/lib']                    
    CUDADRV_LIBNAME = ['cuda']                                                      
    CUDART_LIB_DIR = ['${CUDA_ROOT}/lib']                     
    CUDART_LIBNAME = ['cudart']                                                     
    CURAND_LIB_DIR = ['${CUDA_ROOT}/lib']                     
    CURAND_LIBNAME = ['curand']                                                     
    CXXFLAGS = ["-arch", "x86_64", "-arch", "i386"]                                 
    LDFLAGS = ["-F/Library/Frameworks", "-arch", "x86_64", "-arch", "i386"]         
    CXXFLAGS.extend(['-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk'])
    LDFLAGS.extend(['-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk'])
    

    【讨论】:

    • 谢谢。出于某种原因,我的编译器针对 10.5 OSX 版本,导致编译错误。删除“-arch”、“i386”部分为我解决了这个问题。
    【解决方案2】:

    只需将export LDFLAGS="-F/Library/Frameworks/" 添加到您的.profile

    然后pip 可以成功安装pycuda,至少在我的装有 Yosemite 的 Macbook 上。

    【讨论】:

      【解决方案3】:

      您可以将此过程与Python2.7Python3.4 一起使用

      首先,我安装了 boost 库:

      $brew install boost
      $brew install boost-python
      

      其次,您创建一个文件$HOME/.aksetup-defaults.py,内容为:

      CUDA_ROOT = '/usr/local/cuda'
      CUDADRV_LIBNAME = ['cuda']
      CUDADRV_LIB_DIR = ['${CUDA_ROOT}/lib']
      CUDART_LIBNAME = ['cudart']
      CUDART_LIB_DIR = ['${CUDA_ROOT}/lib']
      CUDA_ENABLE_CURAND = True
      CUDA_ENABLE_GL = True
      CUDA_INC_DIR = ['${CUDA_ROOT}/include']
      CUDA_TRACE = False
      CURAND_LIBNAME = ['curand']
      CURAND_LIB_DIR = ['${CUDA_ROOT}/lib']
      USE_SHIPPED_BOOST = True
      

      最后,使用 pip 安装 pycuda

      $python -m pip install pycuda
      

      瞧!开始使用pycuda

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        相关资源
        最近更新 更多