Chcę używać Clang i LibTooling do tworzenia narzędzi do analizy i transformacji źródeł C++. Zbudowałem Clang i LibTooling po tutorialu this i byłem w stanie uruchomić i stworzyć narzędzia do analizy i kompilować programy w C++ przy pomocy zbudowanego binarnie Clang. Jednakże, jeśli dołączę nagłówki ze standardowej biblioteki (w plikach źródłowych lub moich narzędziach), napotkam problemy podczas kompilowania lub uruchamiania plików/narzędzi źródłowych. Na przykład, jeśli biegnę szczęk sprawdzić na poniższym pliku C++ źródło:Jak korzystać z biblioteki standardowej za pomocą Clanga i LibToolinga
#include <iostream>
int main() {
std::cout << "Hello";
return 0;
}
otrzymuję „błąd krytyczny:«»iostream pliku nie znaleziono”. (Uwaga: mogę skompilować programy w C++, np. Z klasami zdefiniowanymi przez użytkownika, po prostu nie w programach w C++ przy użyciu biblioteki standardowej). Próbując rozwiązać ten problem, zbudowałem bibliotekę libC++ (zgodnie z przewodnikiem this, budując go w bibliotece Llvm/Project katalog, w którym zbudowałem LLVM i Clang), ale nadal mam problemy z uzyskaniem Clanga i narzędzi do używania libC++. Teraz, gdy próbuję skompilować plik testowy używając:
export CPLUS_INCLUDE_PATH="~/clang-llvm/llvm/projects/libcxx/include"
export LD_LIBRARY_PATH="~/clang-llvm/llvm/projects/libcxx/lib"
~/clang-llvm/llvm/build/bin/clang++ ~/Documents/main.cpp
Potem dostać „błąd krytyczny:«unistd.h»plik nie znaleziono”. Moje pytanie brzmi: jak właściwie wskazać Clanga i moje narzędzia, aby używać biblioteki libC++?
Używam systemu OS X Yosemite 10.10 i używam Clang 3.6.0.