CentOS 5 上的 llvm 和 clang 没有 root 权限?

CentOS 5 上的 llvm 和 clang 没有 root 权限?

我正在尝试在没有 root 权限的情况下在 centOS 5 上使用 llvm 和 clang。我尝试下载 llvm 和 clang src 包并尝试常用的配置、制作和制作安装步骤,如下所示:

wget http://llvm.org/releases/3.3/llvm-3.3.src.tar.gz
wget http://llvm.org/releases/3.3/cfe-3.3.src.tar.gz
tar xzf llvm-3.3.src.tar.gz && cd llvm-3.3.src/tools/ && tar xzf ../../cfe-3.3.src.tar.gz

我尝试使用为这个 64 位 CentOS 系统编译的较新版本的 gcc,因为旧版本无法工作(见下文)。当我尝试使用新版本时,我得到以下信息:

export LD_LIBRARY_PATH=/home/avilella/src/gcc/gcc-4.7.2/lib64:/home/avilella/src/gcc/gcc-4.7.2/lib
export CC=/home/avilella/src/gcc/gcc-4.7.2/bin/gcc
export CXX=/home/avilella/src/gcc/gcc-4.7.2/bin/g++  
export PATH=/home/avilella/src/python/python-2.7.3/bin:$PATH
cd ~/src/llvm/latest/llvm-3.3.src
./configure --prefix=/home/avilella/src/llvm/latest/llvm && make clean && make -j8 && make install

完成这些步骤后,我在 bin 目录中看不到 clang:

/home/avilella/src/llvm/latest/llvm/bin    

所以我按照 clang 目录中的说明进行操作make -j8

cd ~/src/llvm/latest/llvm-3.3.src/tools/cfe-3.3.src
make -j8

这样做,我收到此clange/Config/config.h错误:

[...]
InitHeaderSearch.cpp:17:51: fatal error: clang/Config/config.h: No such file or directory
[...]

2011 年的错误报告中提到了这一点,现在我已经解决了:

http://llvm.org/bugs/show_bug.cgi?id=11903

有任何想法吗?


之前的尝试:

cd ~/src/llvm/latest/llvm-3.3.src
./configure --prefix=/home/avilella/src/llvm/latest/llvm && make clean && make -j8 && make install

checking for clang... clang
checking for C compiler default output file name... configure: error: C compiler cannot create executables
See `config.log' for more details.

部分内容config.log

configure:2047: checking for clang
configure:2063: found /home/avilella/bin/clang
configure:2074: result: clang
configure:2110: checking for C compiler version
configure:2117: clang --version >&5
clang: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by clang)
clang: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by clang)
clang: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by clang)
clang: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by clang)
clang: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by clang)
[...]

我尝试使用 llvm 网站上提供的 fedora18 二进制版本,但它抱怨系统中找不到 GLIBC 版本:

[~/src/llvm/clang+llvm-3.3-x86_64-fedora18/bin] $ ./clang
./clang: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ./clang)
./clang: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./clang)

我在这个系统上安装了更新版本的 gcc,但我猜我需要下载二进制文件或重新编译 libc 版本才能使其正常工作。问题是如何。

我尝试从这里下载 rpm:

http://pkgs.org/centos-5-rhel-5/centos-rhel-updates-x86_64/glibc-2.5-107.el5_9.5.x86_64.rpm/download/

我将 rpm 的内容放入一个文件夹中:

rpm2cpio $rpm | cpio -idmv

并将该文件夹 lib64 添加到我的 LD_LIBRARY_PATH 环境变量中,但这也没有解决问题(并制作了简单的命令,例如ls崩溃less):

clang: /home/avilella/src/llvm/glibc/lib64/libc.so.6: version `GLIBC_2.15' not found (required by clang)
clang: /home/avilella/src/llvm/glibc/lib64/libc.so.6: version `GLIBC_2.14' not found (required by clang)

答案1

我能够按照您所采取的步骤的修改版本来构建 clang。

# Preliminary:
#  Get source
#  Extract source
#  Set environmental variables

cd /home/avilella/src/llvm/latest
# Clang is expected to be at `tools/clang`.
mv tools/cfe-3.3.src tools/clang
# You should clean before configuring, not after.
make clean
# The missing config.h file is created by the configure script
#  if clang is in the correct location 
./configure --prefix=/home/avilella/src/llvm/latest/llvm
make -j8
make install

答案2

一般来说,简单地解压 RPM 并尝试使用其内容并不是一个好主意,因为:

  1. 你必须解决依赖关系

  2. 您丢失了所谓的 RPM 脚本,这对于正常运行可能至关重要

  3. 您丢失了原始目录结构,这对于正常运行可能至关重要

数字 2 和 3 实际上很少成为问题(仅在 RPM 包准备不充分时才会发生),但在这种情况下,您的问题是第一个......看起来 glibc-common= 2.5-107.el5_9.5是一个依赖项,例如...

但无论如何,您选择的这种方法相当不幸......如果您需要在没有 root 访问权限的服务器上使用新的编译器,您可以简单地从源代码编译它并将其安装到任意目录中。首先看一下 clang入门页。并确保您在致电时configure使用--prefix=/path_to/my_favorite_directory.

相关内容