Skrypt ./configure
przyjmuje 3 opcje --build
, --host
i --target
. Mylę ich role. Jaka jest ich różnica i semantyka?
121
Skrypt ./configure
przyjmuje 3 opcje --build
, --host
i --target
. Mylę ich role. Jaka jest ich różnica i semantyka?
--host
i--build
. Mam dwa projekty C ++ i nie mogę zbudować dla Androida, ponieważ Autotools jest tak popieprzony. Nalega na uruchamianie testów przy użyciu łańcucha narzędzi hosta.Odpowiedzi:
Jak wspomniano w tym poście na blogu i wspomniano w Warunkach konfiguracji GCC ,
--target
mają zastosowanie tylko wtedy, gdy kompilujesz łańcuchy narzędzi. Kiedy robisz normalną kompilację krzyżową biblioteki lub pliku binarnego, którego używaszJednak, kiedy są toolchain budowę, co może się bardziej skomplikowane. Myślę, że poniższe informacje są poprawne (chociaż nie mogę powiedzieć, że kiedykolwiek ręcznie skompilowałem cross-debugger):
Powiedzmy, że masz:
Skonfigurowałbyś i zbudował swój serwer debugowania (np. Gdbserver), aby działał na twoim urządzeniu wbudowanym z
abyś mógł podłączyć się do swojego urządzenia wbudowanego i uruchomić "gdbserver: 1234 a.out", aby rozpocząć debugowanie i nasłuchiwać na porcie 1234.
Następnie zbudowałbyś swojego klienta debugującego (który łączy się z gdbserver i kontroluje go) z
który można skopiować na laptopa x86, aby w polu uruchomić "gdbclient embedded.device: 1234" w celu debugowania programu a.out.
To wszystko dotyczy również kompilatorów, dla których możesz zajrzeć do powyższego łącza GCC lub tej sekcji o kanadyjskiej kompilacji krzyżowej .
Zauważ również, że w praktyce możesz nie widzieć kompilacji, hosta lub celu, ponieważ zgodnie z tą stroną podręcznika Autoconf , „cel domyślnie jest hostem, hostem do zbudowania i budowaniem na podstawie config.guess”.
Jednym słowem, zbudować kod na
--build
uruchom go--host
z--target
architekturą otoczenia.źródło
Uwaga: Argument
--target
ma sens tylko podczas budowania kompilatora (np. GCC). Podczas uruchamianiaconfigure
przed zbudowaniem GCC:--build
: maszyna, na której budujesz--host
: maszyna, dla której budujesz--target
: maszyna, dla której GCC utworzy plik binarnyZ dokumentacji GCC ( uwagi dotyczące instalacji specyficzne dla hosta / celu ):
źródło
--target
nie dotyczy żadnego projektu, który sam nie jest kompilatorem. Dlaczego więc jest to standardowa opcja konfiguracji? Mylące.configure
nie jest szczytem dobrego i czystego projektu; Wydaje mi się, że to tylko wynik pełzania funkcji specyficznych dla aplikacji.