The Rise of Machines: Real World Applications of AI
Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.
LLVM är en kompilatorinfrastruktur med öppen källkod. LLVM startades 2000 och har använts och modifierats flitigt av Apple sedan 2005. Clang är en C, C++, Objective-C och Objective-C++ kompilator som fungerar med LLVM-systemet. Clang startades 2007 av Apple och sedan dess har Google och Intel engagerat sig i dess fortsatta utveckling.
Clangs utvecklare hävdar att den jämfört med GCC kompilerar snabbare, använder mindre minne, ger mer användarvänlig diagnostik under kompilering och är kompatibel med GCC.
CentOS följer utvecklingen av Red Hat Enterprise Linux (RHEL). RHEL strävar efter att vara en stabil serverplattform, vilket innebär att den inte har bråttom att inkludera de senaste versionerna av allt.
När denna artikel skrevs distribuerar CentOS 6 officiellt LLVM & Clang v3.4.2. Clang v3.6 har dock släppts.
Det officiella förslaget är att om du behöver en nyare version av LLVM & Clang, bör du överväga en annan UNIX-distribution som är mer fokuserad på att stödja de senaste versionerna av mjukvarupaket.
Lyckligtvis kan du installera en nyare version LLVM & Clang GCC på CentOS. Detta avviker från att enbart använda den officiellt distribuerade programvaran, men ibland kan du känna att du har lite val.
Den här artikeln beskriver hur du installerar CentOS 6-versionen av LLVM & Clang som officiellt stöds, och hur du installerar en nyare version. Den här artikeln förutsätter att du har en nyinstallerad CentOS 6 VPS, men du kan säkert följa instruktionerna på en VPS som du redan har använt.
Clang är i stort sett oberoende av GCC, men när den här artikeln skrivs använder Clang fortfarande flera delade bibliotek installerade av GCC (nämligen crtbegin.o, gcc, och gcc_s). Om du installerar LLVM & Clang på CentOS 6 kommer du inte att kunna kompilera någonting om du inte också har GCC på ditt system för dessa delade bibliotek. Helst skulle yum ha ett paketberoende för clang av gcc och gcc-c++, men när den här artikeln skrevs är yum omedveten om beroendet.
Att bygga en nyare version av LLVM & Clang från källan kräver dessutom G++ v4.7+, som du bara kan få på CentOS 6 genom att installera den efter källa.
Om du kör alla stegen nedan kommer du att sluta med 2 versioner av GCC och 2 versioner av LLVM & Clang. Detta inkluderar en officiellt stödd binär äldre version och en nyare version från källan för varje program. Det finns dock ingen anledning att köra alla stegen nedan. Du kan bestämma om du vill ha den officiellt stödda binära äldre versionen av LLVM & Clang, eller den nyare versionen från källan, och köra vilken del av instruktionerna som passar ditt beslut.
VIKTIG! Installera först en officiellt stödd (äldre) version av GCC, genom att utföra stegen i artikeln Hur man installerar GCC på CentOS 6 -- du behöver INTE utföra stegen under den artikelns rubrik "Installera en nyare version av GCC från källan ".
Installera LLVM & Clang
sudo yum install clang
--- This will bring in llvm as a dependency
Kontrollera de installerade versionerna och se var de finns.
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++
För att bygga LLVM & Clang efter källa på CentOS måste du ha GCC v4.7 eller högre. CentOS 6 har inte den här höga versionen i yum, så du måste först installera en nyare GCC från källan.
VIKTIG! Installera först en nyare version av GCC från källan, genom att utföra stegen i artikeln Hur man installerar GCC på CentOS 6 -- du måste utföra alla steg i den artikeln, inklusive under rubriken "Installera en nyare version av GCC från källa".
Installera ytterligare nödvändiga paket.
sudo yum install cmake
Installera en nyare version av Python. LLVM & Clang v3.6.0 kräver Python v2.7+, men CentOS 6 yum repository har bara Python v2.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
Bestäm vilken version av LLVM & Clang du vill ha. Detta kommando visar dig "taggarna" för de tillgängliga versionerna.
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/
Skaffa källan till versionen av LLVM & Clang som du vill ha. Detta kommer att pågå i några minuter. Resten av den här artikeln är skriven för RELEASE_360/och kommer att ladda ner källorna till ~/sourceInstallations/llvm_RELEASE_360/-- Du måste byta ut rätt tagg för att passa framtida versioner. Katalogen nedan för compiler-rt, libcxx, och libcxxabiär inte absolut nödvändiga, men innehåller några av de funktioner som LLVM & Clang har som GCC inte har, så de ingår i den här artikeln. Det finns andra LLVM "underprojekt" du kan välja att använda, såsom dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECode och lld. Du kan läsa om dem på LLVM:s webbplats .
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.
Bygg LLVM & Clang. Detta kommer att pågå ett tag. Om detta slutförs korrekt kommer den sista raden du ser att säga "framgång". Det är normalt att se några felmeddelanden som snabbt rullar förbi. Det är alltid en bra idé att bygga saker i en annan katalog än en källkatalog.
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.
Kontrollera de installerade versionerna och se var de finns.
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++
Lägg till de nya biblioteken till ld (GNU-länken).
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.
Gör eventuellt ett "hej världen"-program.
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!
Använd LLVM & Clang när du vill.
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.
Eventuellt återta hårddiskutrymme. Din ~/sourceInstallationsmapp kommer att ta upp cirka 11 GB diskutrymme. Det är förmodligen klokt att behålla mapparna, eftersom det finns valfria konfigurationsalternativ du kan behöva använda någon gång i framtiden, och det skulle vara snabbare att ha mycket redan gjort. Och, som nämnts ovan, finns det ytterligare "delprojekt" du kan lägga till i LLVM & Clang. Byggprocessen skapar också loggar som du senare kan kontrollera och arbeta utifrån om något går fel. Men efter att ha kört "sudo make install" tidigare, är din installerade LLVM & Clang inte beroende av någonting i den här katalogen, och utrymmet kan vara mycket dyrt, så du kan göra detta steg och återta 11 GB.
cd ~/
rm -rf sourceInstallations
--- Again, if you can spare the space, you may someday be happy to have left it there.
Du har nu din nyare LLVM & Clang i /usr/local/bin, dina nyare 64-bitars LLVM & Clang libs i /usr/local/lib, och dina nyare LLVM & Clang inkluderar filer i /usr/local/include.
Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.
Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.
Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.
Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.
Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...
När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.
Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.
Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.
I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.
Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer