Pytanie Najlepszy sposób na tworzenie krzyżowych zestawów narzędzi w systemie Mac OS X.


Ostatnie trzy tygodnie spędziłem na badaniach nad rozwojem w systemie Mac OS X. Chcę osiągnąć dwa oddzielne wyniki, ale uważam, że można je osiągnąć tą samą drogą. chcę

  1. skonfiguruj distcc, aby pomóc mojemu staremu laptopowi z Gentoo za pomocą iMaca, który ostatnio dostałem w domu (OS X 10.6, 64-bitowy natywny), który również używam do rozwoju iOS, więc narzędzia Xcode 4 już tam są;
  2. opracuj mój projekt dla zwierząt domowych, który jest jądrem elfa dla x86, x86_64 i ramienia (i zatrzymam się tutaj, ponieważ jest to OT).

Tak więc, po wielu tych myślących rzeczach, które wszyscy robimy w tych przypadkach, wpadłem na pomysł, że aby osiągnąć pierwszy cel, muszę utworzyć toolchain i686-pc-linux-gnu toolchain (czy też jest to i686-unknown-linux -gnu?) ze wszystkimi odpowiednimi wersjami (np. gcc-4.4) i sprawiają, że można go wywoływać przez distcc. Wydaje się, że jest to rozsądne zadanie, ale niestety wydaje się, że istnieją jaśniejsze narzędzia i instrukcje do tworzenia zestawów narzędzi dla niejasnych architektur, takich jak sparc lub mips, a nie jeden rozsądnie zaktualizowany zasób, jak najlepiej wybrać x86. Dlatego pierwsze pytanie: czy jest ktoś, kto z powodzeniem zbudował taki toolchain i odczuwał, że dzieli się bólem? :)

Drugi cel. Moje obecne środowisko pracy składa się z Gentoo na laptopie i686 (tak, tak samo jak pierwszy cel) ze wszystkimi regularnymi rzeczami programistycznymi, a ja używam QEMU do testowania (jego integracja z gdb jest niesamowita). Naprawdę chciałbym nadal korzystać z laptopa podczas podróży (robię dużo dojazdów do pracy) i nadal pracować i testować na iMacu, gdy jestem w domu (git jest niesamowity pod tym względem). Stąd drugie pytanie: czy jest ktoś, kto zrobił coś takiego i chciał się podzielić?

Naprawdę doceniam każde wejście. Poważnie.

EDYTOWAĆ Wiem o MacPorts, crosstool i crosstool-ng. Próbowałem zainstalować i386-elf-binutils 2.18 z MacPorts, aby odkryć, że mam 2.20 w moim laptopie. Nie mogłem też przekonać gcc44 do tworzenia obiektów elfów i686-pc-linux-gnu, a użycie i386-elf-gcc nie jest opcją, ponieważ potrzebuję 4.4, a pakietem jest 4.3.


12
2018-06-18 12:56


pochodzenie




Odpowiedzi:


Nie jest to łatwe zadanie, szczególnie dlatego, że chcesz przechodzić kompilację na tak wiele różnych platform.

Najczęściej stosowanym podejściem jest uruchomić maszynę wirtualną z pożądanym systemem operacyjnym (np. VirtualBox, Paralele, VMWare Fusion) i zainstalować narzędzia workbench do pracy z niego. Jest to bardzo przydatne, ponieważ nie jest skomplikowane w konfiguracji, a także ułatwia pisanie, testowanie i debugowanie kodu dla / z systemu docelowego.

Oczywiście, jeśli przeszukujesz wystarczająco dużo, znajdziesz wszelkiego rodzaju hacki / triki, aby skonfigurować toolchain na Mac OS X i skompilować kod dla innych architektur:


5
2018-06-22 00:55



Podejście VM prawdopodobnie zadziałałoby w przypadku distcc (i w pewnym momencie faktycznie to rozważyłem, a następnie zrzuciłem je z kilku ważnych powodów), ale myślę, że byłoby to trochę niezręczne dla drugiego przypadku, ponieważ muszę wyeksportować katalog moich źródeł do sieci, zamontować go w VM i uruchomić proces budowania z VM. Niezupełnie płynny przepływ pracy. Gotowe rozwiązania często nie są możliwe, ponieważ w przypadku distcc potrzebujesz dokładnie tej samej mniejszej wersji, tj. 4.4.x i 4.5.y oznacza kaboom. - Morpheu5
Myślę, że warto przetestować gotowe rozwiązanie w tej sprawie. Innym podejściem jest samodzielne budowanie narzędzi: nongnu.org/thug/cross.html - karlphillip
Próbowałem tego i wkrótce się nie udało. Potem spróbowałem crosstool-ng, który wydaje się działać dobrze, ale powoduje ogromną frustrację i zaskoczenie. To prawdopodobnie nie jego wina, ale Mac OS X i jego BSD z wieloma niewytłumaczalnymi założeniami, takimi jak system plików niewrażliwy na wielkość liter. Do tej pory wydaje się, że jest to najbardziej obiecujący sposób. - Morpheu5
Daj mi znać, gdy spróbujesz użyć pakietu, który zasugerowałem. - karlphillip
Oba są niewykonalne. Wydaje się, że Buildroot nie idzie dobrze z SL / Lion, a drugi nie oferuje gcc-4.4, której potrzebuję. Dzięki za podpowiedzi. - Morpheu5


Wspomniałeś już o Gentoo, więc myślę, że powinieneś rzucić na niego okiem Prefiks Gentoo. Prefiks Gentoo pozwala zainstalować mały system Gentoo w katalogu zdefiniowanym przez użytkownika (= prefiks). Stamtąd możesz uruchomić powłokę, która pozwoli ci użyć portage (= systemu pakietów Gentoo), który powinien umożliwić ci zainstalowanie niezbędnych narzędzi.

Nie wiem w jakiej formie prefiks na OS X jest dzisiaj, ale udało mi się zainstalować go na MacBooku przyjaciela rok temu. Jeśli jesteś zainteresowany, mogę podać dalsze szczegóły na temat proces instalacji co może być nieco trudne.


1
2018-06-24 14:45



Próbowałem już Prefixu, niestety instalowałem natywny toolchain (konkretnie taki, który kieruje na x86_64-apple-darwin10). W Gentoo jest dobre narzędzie o nazwie crossdev, ale nie pojawia się w prefiksie. - Morpheu5
Pozwól mi rzucić okiem na build.log. - cschwan