2013-02-15 25 views
7

Zastanawiam się, czy ktoś zdołał zbudować świeżą SDL2 z toolchainem Android NDK (r8d).Budowanie SDL2 z toolchain NDK

Wydaje się, że SDL2 jest bardzo zbliżone do wydania (od wczoraj nie jest już "W CONSTROCTION: http://hg.libsdl.org/SDL/rev/0a3d2ec7af6d) .Posiada AndroidMk i po prostu kompiluje dobrze postępując zgodnie z instrukcjami w dołączonym pliku README.android. Moje pytanie brzmi: czy naprawdę nie ma działającej kompilacji opartej na automake, czy będzie dostępna do kompilacji na Androida, czy coś jest nie tak z moją konfiguracją toolchain?

Zainstalowałem toolchain NDK zgodnie z instrukcjami zawartymi w dokumentacji $ NDK/doc/STANDALONE-TOOLCHAIN.html. Używam gcc 4.6. Oto jedno środowisko, z którego korzystam:

params Configure

./configure --host=arm-linux-androideabi --prefix=$SYSROOT/usr/local 

Z tej samej konfiguracji i skutecznie zbudowany libjpeg-turbo V8 i SDL_image. Skrypt configure rozpoznaje cross-kompilator, i buduje makefile, jednak znajdzie poparcie X11, nie widać OpenGL ES ... make zawiedzie:

In file included from /usr/include/features.h:378:0, 
      from /usr/include/sys/types.h:27, 
      from ./include/SDL_stdinc.h:35, 
... 

sprawdziłem rejestr konfiguracyjny, i nie mam pojęcia, skąd pochodzi "/ usr/include". Ale w rzeczywistości wygenerowany plik Makefile dodaje tę linię w EXTRA_CFLAGS do kompilatora. Dokument NDK odwołuje się do --with-sysroot = $ SYSROOT jako opcjonalnego, dodałem go, aby sprawdzić, czy rozwiązuje problem, ale to nie pomogło. Jako ostatni wysiłek ręcznie edytowałem plik Makefile, ustalając to odwołanie, a teraz kompilator narzekał na X11.h. AFAIK Android nie ma nic wspólnego z X11, więc domyślam się, że całe drzewo kompilacji jest zupełnie nieodpowiednie do użycia z NDK.

Próbowałem również innej konfiguracji, znalezionej w starszym wątku here. Ani definiowania -DANDROID -mandroid -fomit-frame-pointer nie zmienia z powrotem do -march = ARMv7-a -mfloat-abi = softfp -mfpu = VFP -mthumb”rozwiązało problem.

Na poprzednich projektów, miałem aby odświeżyć config.guess i config.sub, aby uzyskać rozpoznanie mojego kompilatora, SDL chyba ich nie używa, a ponadto Makefile.ac lub Makefile.am nie jest wyposażony w SDL do pracy, a żadne szablony dla innej platformy nie mogą być dobrym punktem wyjścia do stworzenia własnego pliku makefile Dodatkowo, nigdy nie miałem do czynienia z plikami Makefile, naprawdę nie mam szansy rozwiązać tych problemów. Nawet jeśli to się uda, prawdopodobnie potrzebuję również narzędzia do konfiguracji , ponieważ nie mam pojęcia, w jaki sposób ndk-build może zainstalować SDL2 bez skryptów konfiguracyjnych. Kompilowanie źródeł SDL razem z projektem to jedyne działające, ale brzydkie rozwiązanie. Chciałbym rozmieścić niezbędne pliki lib i nagłówkowe przez make install.

Mam nadzieję, że rozwiązanie to coś naprawdę łatwa i oczywista rzecz, że ja po prostu nie myśleć o ...

+0

Fragment błędu nie jest w rzeczywistości błędem. Nie udało Ci się wprowadzić błędu, a wszystko, co tam jest, to plik zawierający błąd. – Samveen

+0

Budowanie SDL2 przy użyciu configure; make powinno działać teoretycznie, ale żaden z deweloperów nie potrafi tego zrobić, dlatego jest on podsłuchiwany. Zapraszam do zgłaszania wszelkich znalezionych błędów (i łatek!) do Bugzilli https://bugzilla.libsdl.org Jedną rzeczą, którą możesz wypróbować, jeśli masz ochotę eksperymentować, jest uruchomienie configure, po tym, że ta kopia zawiera/SDL_config_android.h na górze SDL_config.h, następnie uruchom make, być może to działa (SDL_config_android.h to wstępnie przygotowany nagłówek konfiguracji dla Androida, który powinien mieć rozsądne ustawienia). – gabomdq

Odpowiedz