Как установить CLang в Ubuntu, используя предварительно скомпилированные двоичные файлы CLang, которые я скачал?
Вот как я скачал CLang: «Страница загрузки LLVM» -> «Загрузить LLVM 3.2» -> «Двоичные файлы Clang для Ubuntu-12.04 / x86_64» ( http://llvm.org/releases/3.2/clang+llvm-3.2-x86_64-linux-ubuntu-12.04.tar.gz .)
Затем я развернул архив в папку на моей 64-битной машине Ubuntu 12.04 LTS. Содержимое развернутой папки выглядит следующим образом:
$ ls clang+llvm-3.2-x86_64-linux-ubuntu-12.04
bin docs include lib share
Вопрос: что мне делать дальше? Нужно ли самому копировать их в некоторые папки, и если да, то какие именно? Большинство инструкций, которые я нашел в Интернете, предназначены для сборки CLang из исходного кода, который здесь не применим.
Я новичок в большинстве этих инструментов. Я создал основную программу на C ++ hello-world и смог скомпилировать и запустить ее, используя GCC и autotools. Теперь я хочу скомпилировать ту же программу с CLang.
Вы можете выполнить тот же шаг, как указано в https://askubuntu.com/questions/89615/how-do-i-install-llvm-clang-3-0
используя GNU tar:
wget <clang-binaries-tarball-url> # or `curl -O <url>`
tar xf clang*
cd clang*
sudo cp -R * /usr/local/
Если твой tar
не GNU и
.tar.gz
, ты можешь использовать tar -xzf
;.tar.xz
архив, вы можете использовать tar -xJf
;.tar.bz2
архив, вы можете использовать tar -xjf
,Предполагая, что вы скомпилировали свою программу с помощью g ++ hello.cpp
Эквивалентами gcc и g ++ являются clang и clang ++ соответственно. Они находятся в папке с мусорным баком.
Неважно, куда вы помещаете папки clang, важно, чтобы вы не перемещали их позже. Так что разместите их где-нибудь (я предпочитаю $ HOME, и я предположу это для следующего)
Затем:
export PATH=~/clang+llvm-3.2-x86_64-linux-ubuntu-12.04/bin/:$PATH
Сделайте это постоянным, добавив его в ~ / .bashrc
echo «export PATH = ~ / clang + llvm-3.2-x86_64-linux-ubuntu-12.04 / bin /: \ $ PATH» >> ~ / .bashrc
Теперь вы можете сделать clang ++ hello.cpp
Я хотел бы установить Clang в /home/s
, т.е.
/home/s
bin
lib
include
...
Я сделал следующее в Ubuntu:
wget <clang-binaries-tarball-url>
sudo tar -xf <clang+llvm-..tar.xz> --strip-components=1 -C /home/s
# Set the path environmental variable
export PATH=/home/s/bin:$PATH
# Tell ldconfig about new shared library in /home/s/lib
cd /home/s
cat > libs.conf << "END"/home/s/lib
END
sudo mv libs.conf /etc/ld.so.conf.d/libs.conf
sudo ldconfig
Чтобы проверить это:
clang --version
Выход:
clang version 7.0.0 (tags/RELEASE_700/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/s/bin
Давайте проверим файловую систему C ++ 17 сex1.cpp
#include <iostream>
#include <filesystem>
int main() {
for(auto &file : std::filesystem::recursive_directory_iterator("./")) {
std::cout << file.path() << '\n';
}
}
Скомпилируйте это
clang++ -std=c++17 -stdlib=libc++ -Wall -pedantic ex1.cpp -o ex1 -lc++fs
Запустить его
./ex1
Выход:
"./ex1""./ex1.cpp"