我正在爲Android應用程序編寫基於ARM NEON的代碼,而且我正在努力解決某些編譯器標記不被識別的問題。後來我意識到對這些標誌的支持只是在最近才添加的,而且我的GCC版本比較老。我在Windows上做了所有事情,並且受到Cygwin提供的版本的限制。這裏是我的問題:在我嘗試在Windows機器上構建GCC 4.6.0並使Cygwin喜歡它之前,它會對我工作還是NDK使用它自己的GCC版本,並且我的升級完全不會影響它?如果是這樣,是否可以告訴它使用不同的編譯器?Android NDK使用哪種編譯器?
19
A
回答
10
NDK本身調用構建在arm-eabi-gcc
編譯器上的定製交叉編譯器。有些人使用支持ARM指令集的bog標準GCC實現來創建自定義工具鏈,但這不是我的聯盟。我以前閱讀過的大部分內容都是使用NDK附帶的工具鏈來編譯本機代碼。
推論:大多數抱怨並且必須製作自己的工具鏈的人都對那些對NDK工具鏈編譯器的(假設的)C++支持不滿意的人感到不滿。我不能說這個,因爲一些文章比較老,而且Android的變化非常迅速。這也不是一個似乎太頻繁出現的意見。
18
關於NDK R8D它可以在2種方法(參見Andriod ndk)來修改:
- 對於NDK建造,導出NDK_TOOLCHAIN_VERSION = 4.7變量或將其添加到Application.mk。
- 對於獨立構建,添加--toolchain =選項make-standalone-toolchain.sh
--toolchain=arm-linux-androideabi-4.7
默認編譯器在NDK /建造/型芯/ setup-toolchain.mk設置(參見NDK_TOOLCHAIN和NDK_TOOLCHAIN_VERSION)
6
GCC是有利於鐺的,不贊成使用NDK 11(2016年3月)
提到的官方版本的歷史:https://developer.android.com/ndk/downloads/revision_history.html
如何編譯器之間的切換被要求在:
- How to switch between gcc and clang in Android NDK Revision 11?
- Latest C++11 features with Android NDK
而且你可以很容易地檢查:
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
然後只需登錄s
或迴歸它到TextView
。
相關問題
- 1. 使用Android NDK編譯libpcap
- 2. NDK Android編譯各種擴展文件
- 3. 在android ndk編譯fftw3 ndk
- 4. 交叉編譯爲Android使用NDK失敗,編譯器錯誤
- 5. NetBeans使用哪種Java編譯器?
- 6. 要使用哪種D編譯器?
- 7. Android NDK不編譯
- 8. Android編譯庫NDK
- 9. 用Android NDK編譯PugiXML
- 10. 在編譯保存期間VS2015使用哪種Typescript編譯器
- 11. 使用NDK爲Android編譯OpenALPR
- 12. 使用Android編譯FFmpeg 3.1.1 for x86 NDK
- 13. 使用Android NDK交叉編譯
- 14. Android NDK編譯器openssl發生錯誤
- 15. 的Android NDK編譯GMP庫
- 16. 在Android NDK中編譯OpenCV
- 17. Android-NDK編譯和鏈接
- 18. 的Android NDK編譯錯誤
- 19. NDK錯誤編譯
- 20. 編譯本機代碼使用NDK
- 21. 使用.lds腳本編譯NDK程序
- 22. android JNI加載mupdf(用NDK編譯?)
- 23. 用Android NDK編譯Libtorrent Rasterbar任何人?
- 24. 哪個編譯器用於通過ndk移植C++?
- 25. 我的iPhone應用程序使用哪種編譯器
- 26. NDK編譯錯誤:
- 27. 使用WebRTC編譯ndk項目
- 28. 使用NDK編譯C++本機活動
- 29. 編譯NDK庫
- 30. 使用NDK爲Android編譯彙編程序
它可能只是一個沼氣標準的海灣合作委員會,但建立了正確的選項集。理論上,'gcc -v'輸出應該顯示一行'Configured with:...'顯示GCC是如何構建的。當然,在NDK的某些'bin'目錄中用'some-prefix-gcc'替換'gcc'。 – rubenvb
@rubenvb最有可能。但是因爲我不能爲谷歌發言,所以我不能以任何信心來說。 –
謝謝,有道理。 – Phonon