2009-04-20 71 views
5

Próbuję statycznie krzyżować kompilację Mono dla MIPS. Jestem w stanie skompilować Mono, ale zawsze jest dynamicznie połączony z jego zależnościami, mimo że określam statyczny dla kompilatora.Ktoś krzyż skompilował Mono dla MIPS 64 używając uClibc?

Napisałem program testowy i jestem w stanie statycznie skompilować go z moim toolchainem i uruchomić na docelowej platformie. Nie jestem pewien, czy czegoś brakuje, czy nie jest to możliwe. Zbudowałem swój toolchain używając buildroot.

EDIT

Żeby było trochę bardziej jasne, chciałbym statycznie skompilować mono z jego zależności. Zależności, na których opiera się mono, to: GLib, pkg-config i gettext. Wierzę, że GLib jest bezpośrednią zależnością i GLib zależy od pkg-config i gettext.

Mogę opublikować moje zmienne środowiskowe i skonfigurować polecenie, jeśli to konieczne.

Odpowiedz

1

Cóż, minęło trochę czasu, odkąd próbowałem tego, ale chciałem zgłosić to, czego się nauczyłem. Po pierwsze, dowiedziałem się, że procesor MIPS jest 64-bitowy, a nie 32-bitowy, tak jak początkowo powiedziałem dla urządzenia wbudowanego, na które celowałem. Po drugie, kiedy pracowałem nad tym, Mono nie miał jeszcze 64-bitowej obsługi MIPS. Po drobnych badaniach zobaczyłem, że grupa pod numerem N-iX przenosiła Mono, aby obsługiwać 64-bitową architekturę MIPS w oparciu o 32-bitowy port, który już został zrobiony. 64-bitowy port był wykonywany dla firmy o nazwie SiCortex, Inc., a N-iX starał się, aby ich poprawki zostały zastosowane do głównego pnia rozwojowego Mono. Aby uzyskać więcej informacji, sprawdź to forum thread. Wysłałem stwierdzenie, że chcę pomóc w testowaniu, ale nigdy nie otrzymałem odpowiedzi.

Jeśli chodzi o statyczne kompilowanie Mono, dowiedziałem się, że Mono używa libtool do łączenia ze sobą bibliotek. Będę musiał dowiedzieć się więcej o tym narzędziu, zanim spróbuję statycznie skompilować. Zatrzymałem się po tym, jak dowiedziałem się, że Mono nie obsługuje jeszcze 64-bitowego MIPS. Muszę również sprawdzić, czy 64-bitowe łatki portów zostały kiedykolwiek zastosowane do Mono.

Mam nadzieję, że to pomoże.

1

Aby uzyskać w pełni statycznie połączony Mono, musisz najpierw zbudować wszystkie jego zależności (i ich zależności rekursywnie) jako biblioteki statyczne. Tylko wtedy możesz zbudować prawdziwie statyczny Mono.

+0

Obawiałem się, że to może być odpowiedź. W buildroot, wybrałem pakiety, których mono zależało, aby zostały zbudowane za pomocą toolchain, dzięki czemu znajdowałyby się w katalogach lib i bin zestawu narzędzi do łączenia. Po prostu nie chciałem przejść przez proces bez kogoś, kto myśli tak samo. Spróbuję i zgłoś kroki. –

0

Na jednym z podcastów stackoverflow, Miguel powiedział, że przenieśli Mono na iPhone'a, używając wielu statycznych, jak sądzę. Chociaż nie jest to wersja 64-bitowa, pokazuje, że nieprzyjemne rzeczy można zrobić na Mono.

+0

To, co zrobili, to statyczna kompilacja aplikacji .NET, która ma wiele wad. Blisko tego, czego szukam, ale nie do końca. Szukam statycznego skompilowania środowiska wykonawczego Mono. To neguje potrzebę statycznej kompilacji aplikacji .NET, ponieważ środowisko wykonawcze będzie dostępne. –