llvm e clincam no CentOS 5 sem permissões de root?

3

Estou tentando ter llvm e clangar em um centOS 5 sem permissões de root. Eu tentei fazer o download de pacotes srvm e clang src e tentar a configuração ususal, fazer e fazer as etapas de instalação como tal:

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

Eu tentei com uma versão mais nova do gcc compilada para este sistema CentOS de 64 bits, porque a versão mais antiga não funcionaria (veja abaixo). Quando eu tento com a versão mais recente, eu entendo isso:

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

Após esses passos, não vejo clang no diretório bin:

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

Então eu segui as instruções no diretório clang e executei make -j8 nele:

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

Ao fazer isso, recebo este erro clange/Config/config.h :

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

Isso é mencionado em um relatório de erros de 2011, que eu já teria resolvido:

link

Alguma idéia?

TENTATIVAS ANTERIORES:

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.

Alguns dos conteúdos de 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)
[...]

Eu tentei usar as versões binárias do fedora18 disponíveis no site do llvm, mas ele reclama de uma versão do GLIBC que não pode ser encontrada no sistema:

[~/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)

Eu tenho uma versão mais recente do gcc neste sistema, mas acredito que eu precise fazer o download de binários ou recompilar versões da libc para que isso funcione. A questão é como.

Eu tentei baixar o rpms daqui:

link

Eu coloquei o conteúdo do rpm em uma pasta:

rpm2cpio $rpm | cpio -idmv

e adicionei essa pasta lib64 na minha variável env LD_LIBRARY_PATH, mas isso também não resolveu o problema (e tornou o comando simples como ls e less crash):

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)
    
por 719016 03.07.2013 / 11:23

2 respostas

3

Consegui criar o clang seguindo uma versão modificada dos passos que você tomou.

# 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
    
por 06.07.2013 / 23:36
2

Geralmente não é uma boa idéia simplesmente descompactar um RPM e tentar usar seu conteúdo porque:

  1. você precisa resolver as dependências

  2. você perde os chamados scripts RPM, que podem ser vitais para o funcionamento adequado

  3. você perde a estrutura de diretórios original, que pode ser vital para o funcionamento adequado

Os números 2 e 3, na verdade, raramente são um problema (só acontece quando o pacote RPM está mal preparado), mas neste caso o seu problema é o primeiro ... Parece que glibc-common = 2.5-107.el5_9.5 é uma dependência, por exemplo ...

Mas de qualquer forma, essa abordagem que você escolheu é bastante infeliz ... Se você precisa de um novo compilador em um servidor onde você não tem acesso root, você pode simplesmente compilá-lo a partir do código-fonte e instalá-lo em um diretório arbitrário. Comece por dar uma olhada na página Introdução do clang. E certifique-se de quando você chama configure você usa o --prefix=/path_to/my_favorite_directory .

    
por 03.07.2013 / 17:33