Piszę kod oparty na ARM NEON dla aplikacji na Androida i zmagałem się z tym, że niektóre flagi kompilatora nie są rozpoznawane. Później zrozumiałem, że wsparcie dla tych flag zostało dodane całkiem niedawno i że moja wersja GCC jest starsza. Robię wszystko w systemie Windows i jestem ograniczony przez to, jakie wersje ma do zaoferowania Cygwin. Oto moje pytanie: zanim przejdę i spróbuję zbudować GCC 4.6.0 na moim komputerze z Windows i sprawię, że Cygwin się podoba, czy zadziała dla mnie, czy też NDK użyje własnej wersji GCC i moje uaktualnienie w ogóle nie wpłynie na to ? Jeśli tak, to czy można powiedzieć, żeby używał innego kompilatora?Który kompilator używa Android NDK?
Odpowiedz
Sam NDK wywołuje niestandardowy kompilator krzyżowy zbudowany na kompilatorze arm-eabi-gcc
. Istnieją przykłady ludzi, którzy tworzą niestandardowe biblioteki narzędziowe za pomocą standardowych implementacji GCC z obsługą zestawów instrukcji ARM, ale to jest poza moją ligą. Większość rzeczy, które czytałem w przeszłości, zawsze omawiałem przy użyciu zestawu narzędzi dołączonego do NDK do kompilowania kodu natywnego.
Następstwo: Większość osób, które skarżyły się i musiały stworzyć własny mechanizm narzędziowy, to ludzie, którzy byli zdenerwowani (rzekomo) podrzędnym wsparciem dla języka C++ kompilatora NDK toolchain. Nie mogę z tym porozmawiać, ponieważ niektóre artykuły były starsze, a Android zmienia się tak szybko. To także nie była opinia, która zdaje się pojawiać zbyt często.
chodzi NDK R8d może być modyfikowany na 2 sposoby (patrz Andriod ndk)
- Na NdK-konstrukcji, eksport NDK_TOOLCHAIN_VERSION = 4,7 zmienna lub dodać je do Application.mk.
- Dla standalone buduje, dodać --toolchain = opcję make-standalone-toolchain.sh
--toolchain=arm-linux-androideabi-4.7
domyślny kompilator jest w NDK/build/core/setup-toolchain.mk (patrz NDK_TOOLCHAIN i NDK_TOOLCHAIN_VERSION)
GCC jest zastąpiona brzękiem jak z NDK 11 (marzec 2016)
wymienione na oficjalnej historii Weryfikacja: https://developer.android.com/ndk/downloads/revision_history.html
Jak przełączać się między kompilatory proszony jest pod adresem:
- How to switch between gcc and clang in Android NDK Revision 11?
- Latest C++11 features with Android NDK
I można go łatwo sprawdzić z:
enum CONSTEXPR {N = 256};
char s[N];
#ifdef __clang__
snprintf(s, N, "%s", "clang" __clang_version__);
#else
# ifdef __GNUC__
snprintf(s, N, "%s %d.%d.%d", "gcc", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
# endif
#endif
następnie wystarczy zalogować s
lub zwrotu to do TextView
.
- 1. Sprawdzanie, który kompilator Maven używa
- 2. Dlaczego kompilator używa zmiennej tymczasowej?
- 3. budowanie android-ndk?
- 4. Android NDK assert.h problems
- 5. Liczniki czasu Android NDK
- 6. Android NDK R8E brakuje stdlib.h
- 7. Circular ViewPager, który używa FragmentPagerAdapter
- 8. Debugowanie natywnych aplikacji Android NDK
- 9. Testy jednostkowe na Android NDK
- 10. Android NDK funkcja __android_log_print andLogCat
- 11. Android NDK C++ 'wstring' support
- 12. Android Wstępne instalowanie aplikacji NDK
- 13. Android NDK z testem Google
- 14. pthread_cancel() alternatywy w Android NDK?
- 15. Jak ustalić, który kompilator był wymagany?
- 16. Otrzymywanie ostrzeżenia "NDK nie ma katalogu" platform ". bez NDK
- 17. Uprawnienie Android ACCESS_LOCATION_EXTRA_COMMANDS używa
- 18. Dowolny kompilator, który przyjmuje "znak" jako "niepodpisany"?
- 19. Określanie, który kompilator zbudowano: Win32 PE
- 20. Który kompilator java jest używany przez NetBeans?
- 21. Android NDK java.lang.UnsatisfiedLinkError: findLibrary zwrócił wartość null
- 22. Wykorzystanie biblioteki C w ciągu Android NDK
- 23. Android NDK R5 i wsparcie C++ wyjątek
- 24. Gradle Budowanie systemu Android NDK wystawia
- 25. Czy jest kompilator C, który celuje w 8086?
- 26. Powershell Calling .NET Assembly, który używa App.config
- 27. Który ruby powłoki używa jako podpowłoki?
- 28. Jak sprawdzić, który port używa procesu?
- 29. jak sprawdzić, który plik Xib używa obrazu?
- 30. Jak sprawdzić, który proces używa danego pliku?
Prawdopodobnie jest to zwykły GCC w standardzie bagien, ale zbudowany z poprawnym zestawem opcji. Teoretycznie, na wyjściu 'gcc -v' powinien pojawić się wiersz' Configured with: ... 'pokazujący, w jaki sposób zbudowano GCC. Zamień 'gcc' na zgodny' some-prefix-gcc' w jakimś katalogu 'bin' pakietu NDK. – rubenvb
@rubenvb Najprawdopodobniej. Ale ponieważ nie mogę mówić w Google, nie mogę tego powiedzieć z żadnym poziomem zaufania. –
Dzięki, ma sens. – Phonon