Chcę używać C++ 11 lub C++ 14 z clang/clang ++ na CentOS 7. Jak zbudować to środowisko budowlane?Jak zbudować libcxx i libcxxabi przez clang na CentOS 7
Odpowiedz
W tym artykule dowiesz się, jak budować środowisko budowlane w C++ 11 w CentOS 7: repozytorium EPEL firmy RHEL udostępnia pakiety Clang, ale nie ma pakietów bibliotek C++. Części te są nieco kłopotliwe do zbudowania ręcznie. Dostosowane biblioteki C++ dla języka Clang to libC++ (libcxx) [1]. Następnie libcxx potrzebuje również biblioteki ABI, libC++ abi (libcxxabi) [2]. Niestety, te dwie biblioteki mają problem z zależnością cykliczną. Aby rozwiązać problem zależności cyklicznej, libC++ można zbudować bez łączenia abi libC++. Następnie, przy pomocy tego libC++, możemy zbudować libC++ abi linking libC++. Na koniec za pomocą biblioteki abc libC++ możemy zbudować nową bibliotekę abc libC++.
dzyń, libC++ i libC++ ABI etapy budowania środowiska są podane poniżej:
Dodaj RHEL za EPEL repo. Otwórz poniższy link i znajdź sekcję "Jak mogę korzystać z tych dodatkowych pakietów?" https://fedoraproject.org/wiki/EPEL
Znajdź pakiet epel dla swojej wersji CentOS. Np.,:sudo rpm -i https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Zainstaluj Subversion, aby uzyskać najnowsze libcxx i libcxxabi.
sudo yum install svn
Instalacja szczęk i llvm devel (z llvm-konfiguracji).
sudo yum install clang llvm-devel
Zainstaluj cmake.
cd /usr/local wget https://cmake.org/files/v3.5/cmake-3.5.2-Linux-i386.sh sudo chmod 755 cmake-3.5.2-Linux-i386.sh sudo ./cmake-3.5.2-Linux-i386.sh # Check cmake is in /usr/local/bin.
Pierwsza runda do zbudowania biblioteki libcxx bez biblioteki libcxxabi.
# Get libcxx. svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx cd libcxx # It is not recommended to build libcxx in the source root directory. # So, we make a tmp directory. mkdir tmp cd tmp # Specifying CMAKE_BUILD_TYPE to Release shall generate performance optimized code. # The CMAKE_INSTALL_PREFIX changes the install path from the default /usr/local to /usr. cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. sudo make install cd .. rm tmp -rf cd ..
Buduj libcxxabi z libC++.
# Get libcxxabi. svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi cd libcxxabi mkdir tmp cd tmp cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/include .. sudo make install cd ../..
Druga runda do zbudowania biblioteki libcxx z libcxxabi.
cd libcxx mkdir tmp cd tmp # This time, we want to compile libcxx with libcxxabi, so we have to specify LIBCXX_CXX_ABI=libcxxabi and the path to libcxxabi headers, LIBCXX_LIBCXXABI_INCLUDE_PATHS. cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_CXX_ABI_INCLUDE_PATHS=../../libcxxabi/include .. sudo make install
Napisz program testowy C++.
// t.cpp #include <iostream> using namespace std; int main() { cout << "Hello world!" << endl; }
Testowanie kompilacji C++ za pomocą clang ++.
# -std specifies the C++ standard. -stdlib specifies the C++ library you want to use with clang/clang++. -lc++abi is necessary, because the new LD (linker and loader) on CentOS 7 doesn't allow indirect library linking. clang++ -std=c++11 -stdlib=libc++ -lc++abi t.cpp ./a.out
Referencje:
[1] http://libcxx.llvm.org/
[2] http://libcxxabi.llvm.org/
To jest naprawdę pomocne, chciałbym podzielić się bardziej szczegółowym wyjaśnieniem, dlaczego te kroki są konieczne. –
Również FWIW nie działa w Fedorze 20. :( –
Niestety, nie jestem profesjonalistą, który dokładnie wyjaśniłby wszystko, ale te kroki działają tylko na CentOS 7. Spróbuję dodać kilka komentarzy, jak to tylko możliwe. Mogę. –
- 1. Beanstalkd for CentOs 7
- 2. Jak zainstalować sterowniki ODBC PDO PHP na CentOS 7?
- 3. CentOS 7 i Puppet nie mogą zainstalować nc
- 4. NGinX nie może połączyć się z Jenkinsem na CentOS 7
- 5. Błąd zrzucania sterty w Centos 64bit i openjdk 7
- 6. Nie można uruchomić postgresql-9.5 na CentOS 7
- 7. jak zainstalować filezillę na CentOS?
- 8. Usuwanie plików trwale i bezpiecznie na CentOS
- 9. Jak zbudować i zarchiwizować aplikację na iOS?
- 10. Jak zainstalować grunt i jak go zbudować
- 11. Korzystanie Clang na skanowanie budować z SCons i C++ 11
- 12. Docker Centos 7 easy_install supervisor ssl issue za proxy
- 13. Integer dzielenie przez 7
- 14. Instalacja Tensorflow na CentOS 5
- 15. Clang na Windows
- 16. Jak zainstalować starszą wersję R na CentOS
- 17. Jak zainstalować python27-devel na CentOS 6.5
- 18. Instalacja kompresji xz na centos
- 19. clang, openMP i CMake
- 20. Windows.h i clang (LLVM)
- 21. Setup.py: zainstalować lxml z python2.6 na CentOS
- 22. jak wyświetlić clang AST?
- 23. zainstalować ffmpeg-php na CentOS
- 24. Jak zbudować WebPacka na Heroku?
- 25. Clang
- 26. Jak zbudować 32-bitowe moduły XS dla 32-bitowego niestandardowego Perla w 64-bitowym systemie CentOS?
- 27. Jak korzystać z sanitizerów clang na OSX?
- 28. Supervisord na Linuksie CentOS 7 działa tylko wtedy, gdy działa z rootem
- 29. CentOS, Jenkins, Firefox i Selen GRID - UnableToCreateProfileException
- 30. clang-3.8 i kompilator-rt vs libgcc
Jeśli nie chcą budować niczego, można użyć C++ 11 ([bez '' ] (http://stackoverflow.com/q/12530406/1398841)) z Clang 3.4.2 i preinstalowanym libstdC++ na CentOS 7. Włącz [EPEL] (https://fedoraproject.org/wiki/EPEL) repozytorium i 'yum install clang', aby uzyskać [Clang 3.4.2] (https://centos.pkgs.org/7/epel-x86_64/clang-3.4.2-8.el7.x86_64.rpm.htm l). –
phoenix