Инсталирајте званично подржану (старију) верзију ЛЛВМ & Цланг
Инсталирајте новију верзију ЛЛВМ & Цланг из извора
ЛЛВМ је инфраструктура компајлера отвореног кода. ЛЛВМ је покренут 2000. године, а Аппле га је интензивно користио и модификовао од 2005. Цланг је Ц, Ц++, Објецтиве-Ц и Објецтиве-Ц++ компајлер који ради са ЛЛВМ системом. Цланг је покренуо Аппле 2007. године и од тада су Гоогле и Интел укључени у његов континуирани развој.
Цланг-ови програмери тврде да се у поређењу са ГЦЦ-ом, компајлира брже, користи мање меморије, даје лакшу дијагностику током компилације и компатибилан је са ГЦЦ-ом.
ЦентОС прати развој Ред Хат Ентерприсе Линук-а (РХЕЛ). РХЕЛ тежи да буде стабилна серверска платформа, што значи да не жури да укључи најновије верзије свега.
Од писања овог чланка, ЦентОС 6 званично дистрибуира ЛЛВМ & Цланг в3.4.2. Међутим, Цланг в3.6 је објављен.
Званични предлог је да ако вам је потребна новија верзија ЛЛВМ & Цланг, требало би да размислите о другој УНИКС дистрибуцији која је више фокусирана на подршку најновијим верзијама софтверских пакета.
На срећу, можете да инсталирате новију верзију ЛЛВМ & Цланг ГЦЦ на ЦентОС. Ово одступа од чистог коришћења званично дистрибуираног софтвера, али понекад се можете осећати као да немате мало избора.
Овај чланак описује како да инсталирате ЦентОС 6 званично подржану верзију ЛЛВМ & Цланг-а и како да инсталирате новију верзију. Овај чланак претпоставља да имате недавно инсталиран ЦентОС 6 ВПС, али свакако можете пратити упутства на ВПС-у који већ користите.
Цланг је у великој мери независан од ГЦЦ-а, али од писања овог чланка, Цланг и даље користи неколико дељених библиотека које је ГЦЦ инсталирао (наиме, crtbegin.o, gcc, и gcc_s). Ако инсталирате ЛЛВМ & Цланг на ЦентОС 6, нећете моћи ништа да преведете ако такође немате ГЦЦ на свом систему за ове дељене библиотеке. У идеалном случају, иум би имао зависност пакета за цланг од гцц и гцц-ц++, али од писања овог чланка, иум није свестан зависности.
Поред тога, прављење новије верзије ЛЛВМ & Цланг из извора захтева Г++ в4.7+, који можете добити само на ЦентОС 6 ако га инсталирате према извору.
Ако покренете све доле наведене кораке, добићете 2 верзије ГЦЦ-а и 2 верзије ЛЛВМ-а и Цланг-а. Ово укључује званично подржану бинарну старију верзију и новију верзију из извора за сваки програм. Међутим, нема потребе да извршавате све доленаведене кораке. Можете одлучити да ли желите званично подржану бинарну старију верзију ЛЛВМ & Цланг или новију верзију из извора и покрените било који део упутстава који одговара вашој одлуци.
Инсталирајте званично подржану (старију) верзију ЛЛВМ & Цланг
ВАЖНО! Прво, инсталирајте званично подржану (старију) верзију ГЦЦ-а тако што ћете извршити кораке у чланку Како инсталирати ГЦЦ на ЦентОС 6 -- НЕ морате да обављате кораке под насловом тог чланка „Инсталирајте новију верзију ГЦЦ-а из извора „.
Инсталирајте ЛЛВМ & Цланг
sudo yum install clang
--- This will bring in llvm as a dependency
Проверите инсталиране верзије и погледајте њихове локације.
clang --version
May say: clang version 3.4.2 (tags/RELEASE_34/dot2-final)
which clang
/usr/bin/clang
gcc --version
May say: gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
g++ --version
May say: g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
which gcc
/usr/bin/gcc
which g++
/usr/bin/g++
Инсталирајте новију верзију ЛЛВМ & Цланг из извора
Да бисте направили ЛЛВМ & Цланг према извору на ЦентОС-у, морате имати ГЦЦ в4.7 или новији. ЦентОС 6 нема оволику верзију у иум-у, тако да прво морате да инсталирате новији ГЦЦ из извора.
ВАЖНО! Прво, инсталирајте новију верзију ГЦЦ-а из извора, тако што ћете извршити кораке у чланку Како инсталирати ГЦЦ на ЦентОС 6 -- потребно је да извршите све кораке у том чланку, укључујући под насловом „Инсталирајте новију верзију ГЦЦ-а са извор".
Инсталирајте додатно потребне пакете.
sudo yum install cmake
Инсталирајте новију верзију Питхона. ЛЛВМ & Цланг в3.6.0 захтева Питхон в2.7+, али ЦентОС 6 иум спремиште има само Питхон в2.6.6.
mkdir ~/sourceInstallations
cd ~/sourceInstallations
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -xvf Python-2.7.9.tgz
cd Python-2.7.9
./configure && make && sudo make install
Одлучите коју верзију ЛЛВМ & Цланг желите. Ова команда ће вам показати "ознаке" за доступне верзије.
svn ls http://llvm.org/svn/llvm-project/llvm/tags | grep RELEASE
RELEASE_1/
...
RELEASE_352/
RELEASE_360/
RELEASE_361/
svn ls http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_361
rc1/
--- At this time, there is no final, just a release candidate. You could certainly use a release candidate, but this article will show how to use a final release.
svn ls http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_360
final/
rc1/
rc2/
rc3/
rc4/
Набавите извор верзије ЛЛВМ & Цланг коју желите. Ово ће трајати неколико минута. Остатак овог чланка је написан за RELEASE_360/и преузимаће изворе у ~/sourceInstallations/llvm_RELEASE_360/-- Мораћете да замените одговарајућу ознаку да би одговарала будућим верзијама. Директоријуми испод compiler-rt, libcxx, и libcxxabiнису апсолутно неопходни, али садрже неке од функција које ЛЛВМ & Цланг имају, а ГЦЦ нема, па су укључени у овај чланак. Постоје и други ЛЛВМ „подпројекти“ које можете изабрати да користите, као што су драгонегг, ЛЛДБ, ОпенМБ, вмкит, полли, либцлц, клее, САФЕЦоде и ллд. О њима можете прочитати на веб локацији ЛЛВМ .
cd ~/sourceInstallations
svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_360/final llvm_RELEASE_360
cd llvm_RELEASE_360/tools
svn co http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_360/final clang
cd ../projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_360/final compiler-rt
svn co http://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_360/final libcxx
svn co http://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_360/final libcxxabi
cd ..
svn update
At revision X.
--- Hopefully this outputs one line saying "At revision X", but numbers instead of "X". If it downloads more source files, a new revision was released while you were downloading the source code. This is highly unlikely unless you're using trunk (the most up to date, maybe unstable code.) But, if this happens, perform a svn update in the tools/clang, projects/compiler-rt, projects/libcxx, projects/libcxxabi, and again ~/sourceInstallations/llvm_RELEASE_360, until you are fully up to date.
Изградите ЛЛВМ & Цланг. Ово ће трајати неко време. Ако се ово заврши исправно, последњи ред који ћете видети ће рећи „успех“. Нормално је да се неке поруке које изгледају као грешке брзо померају. Увек је добра идеја изградити ствари у директоријуму различитом од изворног.
mkdir ../llvm_RELEASE_360_build
cd ../llvm_RELEASE_360_build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/bin/gcc -DCMAKE_CXX_COMPILER=/usr/local/bin/g++ ../llvm_RELEASE_360 && make && sudo make install && echo success
--- If your VPS has multiple cores, you can speed up the build by changing the middle part
--- of this line from "&& make &&" to "&& make -j <number of cores> &&".
--- You can see the number of cores your VPS has by running "nproc"
--- If you omit -DCMAKE_BUILD_TYPE=Release, the build defaults to debug. This is great if you need to debug LLVM & Clang itself, but slows down compilation of your end programs considerably.
--- If you omit the references to gcc and g++, it will default to using the older binary versions in /usr/bin/, and will not compile.
Проверите инсталиране верзије и погледајте њихове локације.
clang --version
May say: clang version 3.6.0 (tags/RELEASE_360/final 237229)
clang++ --version
May say: clang version 3.6.0 (tags/RELEASE_360/final 237229)
which clang
/usr/local/bin/clang
which clang++
/usr/local/bin/clang++
Додајте нове библиотеке у лд (ГНУ линкер).
echo "/usr/local/lib" > usrLocalLib.conf
sudo mv usrLocalLib.conf /etc/ld.so.conf.d/
sudo ldconfig
--- This may say a file or two "is not an ELF file - it has the wrong magic bytes at the start."
--- You may ignore this message. It is silent about the work it successfully completed.
Опционо направите програм "здраво свет".
mkdir ~/code
cd ~/code
Create a file main.cpp that says:
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}
--- One way to create this file is to run "vi main.cpp", hitting "i" to enter insert mode,
--- typing the above file, hitting ESC, and hitting "ZZ" to save.
clang++ main.cpp -o main
./main
Hello World!
clang++ -stdlib=libc++ -lc++abi main.cpp -o main
--- This uses Clang's libc++ and libc++abi, instead of the GNU stdlibc++ and stdlibc++abi
./main
Hello world!
Користите ЛЛВМ & Цланг када желите.
You could set LLVM & Clang to be your system's default C and C++ compiler by running:
echo "export CC=/usr/local/bin/gcc" >> ~/.bashrc
echo "export CXX=/usr/local/bin/g++" >> ~/.bashrc
source ~/.bashrc
Once and a while there is a difference between Clang and GCC, but it's becoming more and more rare. To be more conservative, you could specify in your code's buildsystem to use LLVM & Clang, but otherwise leave your system's default to the source build of GCC.
Опционо повратите простор на чврстом диску. Ваша ~/sourceInstallationsфасцикла ће заузимати око 11 ГБ простора на диску. Вероватно је паметно задржати фасцикле, јер постоје опционе опције конфигурације које ћете можда морати да користите у неком тренутку у будућности, а било би брже да сте већ много тога урадили. И, као што је горе поменуто, постоје додатни "подпројекти" које можете додати у ЛЛВМ & Цланг. Такође, процес изградње прави евиденције које касније можете да проверите и да радите са њима ако нешто крене наопако. Али, након што сте раније покренули „судо маке инсталл“, ваш инсталирани ЛЛВМ & Цланг не зависи ни од чега у овом директоријуму, а простор може бити премиум, тако да можете да урадите овај корак и повратите 11 ГБ.
cd ~/
rm -rf sourceInstallations
--- Again, if you can spare the space, you may someday be happy to have left it there.
Сада имате свој новији ЛЛВМ & Цланг у /usr/local/bin, своје новије 64-битне ЛЛВМ & Цланг библиотеке у /usr/local/lib, а нови ЛЛВМ & Цланг укључује датотеке у /usr/local/include.