Skip to content

Instantly share code, notes, and snippets.

@dobrokot
Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dobrokot/5664206fdea3e59cdbfd to your computer and use it in GitHub Desktop.
Save dobrokot/5664206fdea3e59cdbfd to your computer and use it in GitHub Desktop.
download and build clang
set -eu
#скачиваю и распаковываю архивы из интернета
curl -sS http://llvm.org/releases/3.5.0/llvm-3.5.0.src.tar.xz | tar -xJf - &
curl -sS http://llvm.org/releases/3.5.0/cfe-3.5.0.src.tar.xz | tar -xJf - &
curl -sS http://llvm.org/releases/3.5.0/compiler-rt-3.5.0.src.tar.xz | tar -xJf - &
curl -sS http://llvm.org/releases/3.5.0/clang-tools-extra-3.5.0.src.tar.xz | tar -xJf - &
wait #жду, пока всё скачается
#mv в существующую папку создаёт лишний уровень иерархии, поэтому проверка на несуществование
test -e llvm-3.5.0.src/tools/clang && { echo "tool/clang already exists"; exit 1; }
mv cfe-3.5.0.src/ llvm-3.5.0.src/tools/clang
test -e llvm-3.5.0.src/projects/compiler-rt && { echo "projects/compiler-rt already exists"; exit 1; }
mv compiler-rt-3.5.0.src llvm-3.5.0.src/projects/compiler-rt
test -e llvm-3.5.0.src/tools/clang/tools/extra && { echo "tools/clang/tools/extra already exists"; exit 1; }
mkdir -p llvm-3.5.0.src/tools/clang/tools
mv clang-tools-extra-3.5.0.src llvm-3.5.0.src/tools/clang/tools/extra
# в системе g++-4.6, а clang просит для сборки 4.8, использую g++ в отдельной папке
# если у вас и так g++4.8, то уберите все эти MY_GCC_PATH, CC, CXX, и LD_LIBRARY_PATH
MY_GCC_PATH=/home/dobrokot/.tools/19087734/gcc
export LD_LIBRARY_PATH=$MY_GCC_PATH/lib
# сборка
(
cd llvm-3.5.0.src
CC=$MY_GCC_PATH/bin/gcc-4.8 CXX=$MY_GCC_PATH/bin/g++-4.8 ./configure
make -j 48
)
echo '#include <iostream>' > test.cpp
echo 'int main() { auto f = [&](){std::cout << "hello world\n"; }; f(); }' >> test.cpp
./llvm-3.5.0.src/Release+Asserts/bin/clang++ -fsanitize=address -O0 -g -std=c++11 test.cpp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment