CPython可以用Clang编译吗?

时间:2017-10-04 19:27:15

标签: python c clang cpython

我正在尝试使用Clang构建CPython,具有非常具体的要求:

我尝试将env变量CC设置为我的clang可执行位置(即/opt/llvm/5/bin/clang,但./configure命令失败并显示以下内容:
configure: error: C compiler cannot create executables

我应该设置哪些标志才能使此版本生效?

2 个答案:

答案 0 :(得分:1)

正如OP上的评论者所指出的,您可以使用clang编译cpython。这是Dockerfile形式的可复制说明。

FROM ubuntu:16.04
WORKDIR /opt/cpython-2.7.14
RUN apt-get update -qq \
    && apt-get install --yes build-essential curl \
    # Install clang
    && curl -fsSL https://releases.llvm.org/5.0.0/clang+llvm-5.0.0-linux-x86_64-ubuntu16.04.tar.xz \
    | tar xJ -C /usr/local --strip-components 1 \
    && curl -fsSL https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz \
    | tar xz --strip-components 1 \
    && CC=/usr/local/bin/clang ./configure --prefix /usr/local/cpython-2.7.14 \
    && make \
    && make install
ENTRYPOINT ["/usr/local/cpython-2.7.14/bin/python"]
docker build --tag cpython:2.7 .
docker run --rm cpython:2.7 --version
# Python 2.7.14

很难说出OP的原始问题是什么,因为这似乎与clang安装有关。查看配置日志将提供更多信息。

免责声明:Python 2已到使用寿命,而ubuntu 16.04将于2021年4月终止。

答案 1 :(得分:-2)

尝试将环境变量CC设置为我的clang可执行文件位置

在Linux上,在Bash中定义一个别名,如下所示: alias cc="clang"

在系统上,我将其设置为alias cc="clang-11"

此外,请确保已在系统上安装了所有clang和llvm软件包。