루트 권한 없이 centOS 5에서 llvm과 clang을 사용하려고 합니다. llvm 및 clang src 패키지를 다운로드하고 다음과 같이 일반적인 구성, make 및 make 설치 단계를 시도했습니다.
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을 다운로드해 보았습니다.
rpm의 내용을 폴더에 넣었습니다.
rpm2cpio $rpm | cpio -idmv
lib64 폴더를 LD_LIBRARY_PATH 환경 변수에 추가했지만 문제가 해결되지 않았습니다(그리고 ls
crash 와 같은 간단한 명령을 만들었습니다 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의 압축을 풀고 그 내용을 사용해 보는 것은 좋은 생각이 아닙니다. 그 이유는 다음과 같습니다.
종속성을 해결해야 합니다.
올바른 작동을 위해 중요한 RPM 스크립트가 누락되었습니다.
올바른 작동에 중요할 수 있는 원래 디렉터리 구조가 손실됩니다.
숫자 2와 3은 실제로 거의 문제가 되지 않지만(RPM 패키지가 제대로 준비되지 않은 경우에만 발생함), 이 경우 문제가 첫 번째 문제입니다... glibc-common= 2.5-107.el5_9.5가 종속성인 것처럼 보입니다. 좋다...
그러나 어쨌든 당신이 선택한 이 접근 방식은 다소 불행합니다... 루트 액세스 권한 없이 서버에서 새 컴파일러를 사용해야 하는 경우 간단히 소스에서 컴파일하고 디렉터리의 아무 곳에나 설치할 수 있습니다. clang을 먼저 살펴보세요.시작하기페이지. 그리고 전화할 때 꼭 configure
이용해 보세요 --prefix=/path_to/my_favorite_directory
.