2012-12-11 13 views
6

Podczas kompilacji krzyżowej często będziesz musiał podać "trójkę docelową". Przykład podanyCzy istnieje lista wszystkich znanych używanych tripletów docelowych?

  • i686-pc-linux-gnu
  • arm-none-linux-gnueabi
  • PowerPC-unknown-linux

i tak dalej ...

Są trojaczki, które czasami są w rzeczywistości czterema komponentami, mają następującą postać:

<CPU>-<MANUFACTURER>[-<KERNEL>]-<OS>

Kernel jest opcjonalny, a producent może być czymś w rodzaju "nieznany" lub "brak", ponieważ często nie ma to znaczenia.

To, czego jeszcze nie znalazłem, to strona z dokumentacją wszystkich możliwych wartości do zastosowania tutaj. Wiem, że wszystkie komponenty są w zasadzie "wolnym stylem", więc nie ma oficjalnego standardu, który zmusiłby cię do użycia komponentów z oficjalnej standardowej listy. Jednak projektanci narzędzi i konfiguratorzy skryptów oczekują, że użytkownicy będą określać te trojaczki dla ich narzędzi/skryptów, więc muszą mieć na myśli pewne możliwe wartości i powinno być coś takiego jak twórcy narzędzi "nieoficjalnych list", twórcy skryptów i użytkownicy mogą używać jako referencja.

Czy ktoś kiedykolwiek znalazł taką listę?

Odpowiedz

5

Tak, jest w źródłach libtool. Nazywa się PLATFORMS. Prawdopodobnie nie jest kompletny. Istnieje również plik o nazwie config.sub, który jest generowany po uruchomieniu autoreconf. Są prawdopodobnie bardziej aktualne/kompletne.

Ale z definicji to, o co prosisz, wydaje się niemożliwe. Jeśli pojawi się nowy procesor "xyz", który pojawi się u jakiegoś producenta, nie pojawi się on na liście przez pewien czas.

Co w takim razie robi skrypt piszący configure? Moje rozwiązanie jest następujące. Mam autoreconf wywoływane w skrypcie o nazwie bootstrap.sh, który ustawia kilka rzeczy przed kompilacji, jak zalecane przez użytkowników Goat Book. Ten skrypt wykorzystuje sed (no, technicznie skrypt owijający sed w GNU shtool), aby wstawić to, czego potrzebuję, do config.sub po skopiowaniu go do AC_CONFIG_AUX_DIR.

Na szczęście pliki config.sub mają znacznik czasu, więc jeśli/kiedy "xyz" zostanie dodany do "oficjalnej" listy, możesz po prostu przetestować sygnaturę czasową. Następnie dodasz nowe "oficjalne" config.sub do swojego archiwum i użyjesz bootstrap.sh, aby sprawdzić, czy autoreconf zapisuje wystarczająco aktualną config.sub. Jeśli nie jest wystarczająco aktualny, skopiuj stary z nowym.

+0

+1 dla listy PLATFORM, niestety całkowicie pomija ARM. – Mecki

+0

Istnieje również [llvm :: Triple Class Reference] (http://llvm.org/docs/doxygen/html/classllvm_1_1Triple.html). Nie tylko wymieniono ARM, podobnie jest iOS. Prawdopodobnie będzie pomocne dla Clang. Nie wiem, jak przydatne dla narzędzi Linux. – jww

Powiązane problemy