Python 2.7 如何为codepy.toolchain设置编译器?
这两行代码取自Python 2.7 如何为codepy.toolchain设置编译器?,python-2.7,python-3.4,toolchain,Python 2.7,Python 3.4,Toolchain,这两行代码取自 我理解,这应该返回一个C++编译器的工具链实例,该代码在$HOME/.AkStutsDebug .Py < /C> > 中找到。 BOOST_COMPILER = 'gcc' BOOST_INC_DIR = ['/usr/local/Cellar/boost/1.57.0/include/'] BOOST_LIB_DIR = ['/usr/local/Cellar/boost/1.57.0/lib/'] BOOST_PYTHON_LIBNAME = ['boost_python
我理解,这应该返回一个C++编译器的工具链实例,该代码在
BOOST_COMPILER = 'gcc'
BOOST_INC_DIR = ['/usr/local/Cellar/boost/1.57.0/include/']
BOOST_LIB_DIR = ['/usr/local/Cellar/boost/1.57.0/lib/']
BOOST_PYTHON_LIBNAME = ['boost_python']
BOOST_THREAD_LIBNAME = ['boost_thread']
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 = False
在Python2.7.6下,我得到以下异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/codepy/toolchain.py", line 433, in guess_toolchain
raise ToolchainGuessError("unknown compiler")
codepy.toolchain.ToolchainGuessError: unknown compiler
我怎样才能告诉
codepy.toolchain
使用哪个编译器?将CC
环境变量设置为适当的值可能会有所帮助。还要检查PythonMakefile
,该文件存储在Pythonlib
目录的config
下。配置信息首先来自于此。我将文件~/.aksetup defaults.py
修改为:
#For CUDA
CUDA_ROOT=['/Developer/NVIDIA/CUDA-5.0/']
CUDADRV_LIB_DIR=['/Developer/NVIDIA/CUDA-5.0/lib']
CUDA_INC_DIR=['/Developer/NVIDIA/CUDA-5.0/include']
#For Boost
BOOST_INC_DIR=['${HOME}/pool/include/']
BOOST_LIB_DIR=['${HOME}/pool/lib']
USE_SHIPPED_BOOST=False
这解决了
工具链
的问题,但我仍在尝试如何编译。即使我设置了CC=gcc-4.9
工具链仍然使用clang
作为默认编译器。有什么方法可以推翻这一点吗?
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/cluster/home03/math/echeverl/local2/lib/python3.4/site-packages/codepy/toolchain.py", line 439, in guess_nvcc_toolchain
gcc_kwargs = _guess_toolchain_kwargs_from_python_config()
File "/cluster/home03/math/echeverl/local2/lib/python3.4/site-packages/codepy/toolchain.py", line 398, in _guess_toolchain_kwargs_from_python_config
so_ext=make_vars["SO"],
KeyError: 'SO'
def guess_toolchain():
"""Guess and return a :class:`Toolchain` instance.
Raise :exc:`ToolchainGuessError` if no toolchain could be found.
"""
kwargs = _guess_toolchain_kwargs_from_python_config()
from pytools.prefork import call_capture_output
result, version, stderr = call_capture_output([kwargs["cc"], "--version"])
if result != 0:
raise ToolchainGuessError("compiler version query failed: "+stderr)
#Original Code
# if "Free Sofware Foundation" in version:
#Modified line to recognize clang
if ("Free Software Foundation" in version) or ("clang" in version):
if "-Wstrict-prototypes" in kwargs["cflags"]:
kwargs["cflags"].remove("-Wstrict-prototypes")
if "darwin" in version:
# Are we running in 32-bit mode?
# The python interpreter may have been compiled as a Fat binary
# So we need to check explicitly how we're running
# And update the cflags accordingly
import sys
if sys.maxint == 0x7fffffff:
kwargs["cflags"].extend(['-arch', 'i386'])
return GCCToolchain(**kwargs)
else:
raise ToolchainGuessError("unknown compiler")
#For CUDA
CUDA_ROOT=['/Developer/NVIDIA/CUDA-5.0/']
CUDADRV_LIB_DIR=['/Developer/NVIDIA/CUDA-5.0/lib']
CUDA_INC_DIR=['/Developer/NVIDIA/CUDA-5.0/include']
#For Boost
BOOST_INC_DIR=['${HOME}/pool/include/']
BOOST_LIB_DIR=['${HOME}/pool/lib']
USE_SHIPPED_BOOST=False