2014-06-30 9 views
7

Sterownik gcc można skonfigurować tak, aby korzystał z określonego łącznika, konkretnych opcji i innych szczegółów (np. Przesłonięcie nagłówków systemu) przy użyciu plików .specs.Czy istnieje odpowiednik plików .spec dla Clang/LLVM i gdzie mogę znaleźć odniesienie?

Aktualna instrukcja (od tego pisania) dla wersji GCC (4.9.0) describes the Spec Files here.

Czy istnieje podobny mechanizm dla Clang/LLVM. Wygląda na to, że Clang ma także the notion of a driver, ale nie byłem w stanie wymyślić żadnej dokumentacji dotyczącej tego, czy Spec Clader lub podobny mechanizm istnieje dla Clanga i jak z nich korzystać.

Interesuje mnie to dla C i C++, ale prawdopodobnie wskazówka do któregokolwiek z nich pozwoli mi zacząć.

Celem jest zastąpienie nagłówków systemu i bibliotek, jak również linkera, jak wspomniano wcześniej.

Odpowiedz

3

Zgodnie z docs, kierowca Clang nie ma bezpośredniego odpowiednika do gcc plików spec.

„Kierowca dzyń ma bezpośredniego korespondent dla«widowisko»większość funkcjonalności, które są osadzone w Specs znajduje się w procedurach tłumaczenia specyficznych dla Narzędzi .. Części specyfikacji, które kontrolują przebieg kompilacji, są na ogół częścią etapu Pipeline. " (od http://clang.llvm.org/docs/DriverInternals.html)

Ścieżkę wyszukiwania #include można nadpisać, używając -nostdinc i -isystem.

Jednak nie wiem, jak zastąpić linker lub całkowicie zastąpić ścieżkę wyszukiwania biblioteki.

+0

Aby przesłonić ścieżkę wyszukiwania linkera, sprawdź stronę man dla 'ld', aby zidentyfikować potrzebne flagi (na przykład' -syslibroot') i powiedz klangowi, aby przekazał je do łącznika przez '-Wl'. Na przykład ta komenda pozwoliła mi użyć niestandardowego wersję 'libstdC++': 'dzyń ++ -std = C++ 11 -stdlib = libstdC++ -nostdinC++ -isystem/ścieżka/do/alt-stdlib/include/C++ -isystem/path/to/alt-stdlib/include/C++/x86_64-apple-darwin14.4.0 -L/path/to/alt-stdlib/lib -lstdC++ -Wl, -syslibroot,/usr/lib -Wl, - syslibroot,/path/to/alt-stdlib/lib test.cpp' –

Powiązane problemy