Android OSã®äººæ°ã®çºå±ãšæé·ã«äŒŽãããã®å¶åŸ¡äžã«ããããã€ã¹ã®æ°ãšçš®é¡ã¯çå®ã«æé·ããŠããŸãã ã¢ãŒããã¯ãã£ãç®çãæé©åã®éãã«ãããå®è¡å¯èœã³ãŒãã®é床ãšå®å®æ§ã¯å€§ããç°ãªãå ŽåããããŸãã ãããã£ãŠãç¹ã«ç¹å®ã®ã¢ãŒããã¯ãã£ããã©ãããã©ãŒã ããŸãã¯ä»ã®ãã©ãããã©ãŒã ããç§»æ€ãããã³ãŒãã®æ©èœã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãšOSã®å®å®æ§ãšæé©åã確ä¿ããã«ã¯ãAndroidã®ã³ãŒãã®ãããã°ããã»ã¹ã«ç¹å¥ãªæ³šæãæã䟡å€ããããŸãã ãã®èšäºã§ã¯ãAndroidã®ãã€ãã£ãã³ãŒãã䜿çšããéã®éèŠãªãã€ã³ããšæ©èœã«ã€ããŠèª¬æããŸãã ãã®ããã¥ã¢ã«ã«èå³ããããã¹ãŠã®äººã«ãç«ããé¡ãããŸãã
2007幎ã«ãGoogle Corporationã¯æ°äžä»£ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã
AndroidããªãªãŒã¹ããŸããã

ãã®åºçŸã¯ãã¢ãã€ã«ããã€ã¹ã®åžå Žã«çã®é©åœããããããMicrosoft Widows MobileãApple iOSãããã³Symbian OSã®èŠæš©ãæãããã®åŸãäžçã§æã人æ°ã®ããå€§èŠæš¡ãªã¢ãã€ã«ã·ã¹ãã ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãªããŸããã ãããŸã§ãã·ã¹ãã ã®äººæ°ã¯
ç¶ããŠããŸãã éå»6幎éã§ãAndroidã¯éåžžã«æé·ããŠéçºããããµããŒããããããã€ã¹ã®ç¯å²ã¯æ¡å€§ãç¶ããŠããŸãã çŸåšããã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯æºåž¯é»è©±ã ãã§ãªããã¿ãã¬ããããã¬ãããã¬ãŒã€ãŒãã«ã¡ã©ãã©ãããããããããããããããã³è»äºæ©åšãå«ããã®ä»ã®ãšããŸããã¯ãªãã®ã§ã䜿çšãããŠããŸãã ãããã®ããã€ã¹ã®å
容ã¯ãäºãã«èããç°ãªãå¯èœæ§ããããŸãïŒé廿°å¹Žã§ããµããŒããããŠããã¢ãŒããã¯ãã£ã®ãªã¹ããARMããMIPSããã³x86ã«æ¡å€§ããããŸããŸãªåšèŸºæ©åšã®ãµããŒããç»å ŽããŸããããã¡ãããéçºäžã®Android APIã¯ãã¡ããã§ãã
æ©èœãã¢ãŒããã¯ãã£ã®éãã«ããããããããã®ãããªèšå€§ãªæ°ã®ç°ãªãããã€ã¹ã¯ããã©ãããã©ãŒã äŸåã©ã€ãã©ãªãšç¹å®ã®ããã€ã¹ã®æé©åãé€ããŠãåãã·ã¹ãã ã§ç®¡çãããŸãã Androidããã€ã¹ã®æé·åžå Žã§ã®æ¿ããç«¶äºã«çŽé¢ããŠããã©ãŒãã³ã¹èŠä»¶ãå¢å ããã ãã§ãããããAndroidãã«ããšã¢ããªã±ãŒã·ã§ã³ã©ã€ãã©ãªããã°ãã°ç°ãªãããšã¯éåžžã«èªç¶ã§ããå€ãã®å Žåããã³ããŒã«ãã£ãŠãç°ãªããŸãã

ããã«ãããããããçµ±åãšã¯ãã¹ãã©ãããã©ãŒã ãä¿èšŒããã¢ããªã±ãŒã·ã§ã³æäœã®é床ã¯ãçŸåšã®é«æ§èœã¢ããªã±ãŒã·ã§ã³ãšã·ã¹ãã ã¢ã»ã³ããªã®åžå Žã®åªå
åéã®1ã€ã§ãã ããã¯ããŸã第äžã«ãããŸããŸãªããŒããŠã§ã¢äžã§å¹ççã«åäœããã³å®è¡ã§ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã èªäœã®èŠä»¶ã®å¢å ãããã³Androidã¢ããªã±ãŒã·ã§ã³ã®é«ãèŠä»¶ãæå³ããŸãã

ã¢ããªã±ãŒã·ã§ã³ãã·ã¹ãã ãããã³ãã®ã³ã³ããŒãã³ããæé©åããã³é«éåããããã®æã广çãªãœãªã¥ãŒã·ã§ã³ã®1ã€ã¯ããã€ãã£ãããã€ãã£ãã¬ãã«ã§ã®æé©åã§ãã èšãæããã°ãæé©åããããå€ãã®å ŽåããŒããŠã§ã¢äŸåã®ã©ã€ãã©ãªãšã³ãŒããããã³ã°ããŒãã«ãªæå³ã§ãåã¿ãŒã²ãããã©ãããã©ãŒã ã«æäŸãããå€ãã®ã©ã€ãã©ãªã®ã¢ããªã±ãŒã·ã§ã³ãšã·ã¹ãã ã®äœ¿çšã ãã®ãããªããŸããŸãªããŒããŠã§ã¢ãã©ãããã©ãŒã ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ããŸããŸãªããŒãžã§ã³ãAPIãã©ãããã©ãŒã ãããã³ã¢ããªã±ãŒã·ã§ã³ã®å®å®ããé«éåäœãä¿èšŒããããã®èŠä»¶ã«ã¯ãç¹å®ã®æ§æã®ã¢ããªã±ãŒã·ã§ã³ãšã©ã€ãã©ãªããã¹ãããããã®å€å€§ãªåªåãå¿
èŠã§ãã
ããã§ããAndroidéçºè
ã«ãšã£ãŠæã䟿å©ãªããŒã«ã®1ã€ã¯ãAndroid NDK-
Android Native Development Kitã§ã ãããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãã©ã€ãã©ãªãããã³ã·ã¹ãã èªäœã®éçºãšãããã°ã«å¿
èŠãªã»ãŒãã¹ãŠãå«ãŸããŠããŸãã
ãã®èšäºã§ã¯ãAndroidãã€ãã£ãã³ãŒãã®ãã¹ããšãããã°ãããã³
DejaGnuãªã©ã®ãµã³ãã«ãã¬ãŒã ã¯ãŒã¯ã䜿çšãããã¹ãèªååãžã®äœ¿çšã«ã€ããŠèª¬æããŸãã
Androidã¯éåžžã«åçã«éçºãããŠãããDejaGnuã«ã¯ãAndroid NDKã®æç¡ã«ãããããããã¹ãããã°ããéå§ããããã«å¿
èŠãªã»ãŒãã¹ãŠã®ãã®ãä»å±ããŠããŸãã ãã®èšäºã®äž»ãªç®çã¯ãAndroidã®ãã¹ãã®ãã¥ã¢ã³ã¹ãšæ©èœãããã³ãšã³ãžãã¢ãééããå¯èœæ§ã®ããããã€ãã®èœãšã穎ã«é¢ããã¹ããŒãªãŒã§ãã
ã¯ããã«ãå°ããªã³ã¡ã³ãïŒãåç¥ã®ããã«ãAndroidã¯Unixã«äŒŒããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ãããéåžžã®LinuxãŸãã¯BSDã«éåžžã«äŒŒãŠãããã»ãšãã©ã®AndroidãœãŒã¹ã³ãŒãã¯ã©ã€ã»ã³ã¹ASL2.0ã«åŸããŸãã Androidã䜿çšãã人ã¯ãçžåœæ°ã®Androidã¢ãžã¥ãŒã«ãBSDããLinuxããã倧å¹
ã«åãæ¿ããããããšãç¥ã£ãŠããŸãã ããã«ãé¢ãããããã€ãã£ãã³ãŒããšã¢ãŒããã¯ãã£ã«é¢ä¿ãããã®ã¯ãã¹ãŠã詳现ã«å
¥ããªãéããLinuxã䜿çšããŠãããã¹ãŠã®äººã«éåžžã«è¿ããç¥ãããŠããŸãã ãããã£ãŠãã³ãŒããéçºããã³ãããã°ããã«ã¯ãUnixã©ã€ã¯ã·ã¹ãã ãšãŸã£ããåãããŒã«ãŸãã¯é¡äŒŒã®ããŒã«ã䜿çšããããšãã§ããŸãã ã³ã³ãã€ã©ã®å Žåããããã¯gccãclangïŒllvmïŒãiccãªã©ã§ãã GCCããŒã«ãã§ãŒã³å
šäœãšããã§ã«ç§»æ€ãããŠããããããã»ã©é£ãããªãç§»æ€ãããä»ã®ãŠãŒãã£ãªãã£ã«ã€ããŠãåãããšãèšããŸãã
ãã€ãã£ãã³ãŒããã¢ããªã±ãŒã·ã§ã³ã«å«ãããããã€ãã£ãã©ã€ãã©ãªããã€ãã£ãå®è¡å¯èœãã¡ã€ã«ã䜿çšããäž»ãªçç±ã¯ãããã©ãŒãã³ã¹ãåäžãããããLinux / Unixã©ã€ã¯ã·ã¹ãã ãã以åã«äœæããC / C ++ / ASMã³ãŒããåå©çšããããšã§ãã
ãã€ãã£ãã³ãŒãã䜿çšããå©ç¹ ïŒ
â¢é«æ§èœ
â¢CPU / HWæ©èœã®çŽæ¥äœ¿çš
â¢æ¢åã®Linuxã³ãŒããåå©çšããæ©èœ
ãã€ãã£ãã³ãŒãã䜿çšããããšã®æ¬ ç¹ ïŒ
â¢CPU / HWã®åå¥èšå®
â¢ã·ã¹ãã ã©ã€ãã©ãªã®ãµããŒãã®æ¬ åŠ
é·æãšçæã¯ãã³ãŒãå質ãå®å®æ§ãããã³ãã©ãããã©ãŒã å
šäœã®ããã©ãŒãã³ã¹ã®äž¡æ¹ã®ç¹ã§ãå³å¯ãªãã¹ããå¿
èŠãšããŸãã Androidã®æçŸ©ã®1ã€ã¯ããŒããŠã§ã¢ããç¬ç«ããŠãããšããäºå®ã«ãããããããããŸããŸãªæ§æã§åäœããããã«ãå®éã«ã¯ããã€ãã£ãã³ãŒããæã€ã¢ããªã±ãŒã·ã§ã³ã¯ããããããã¡ãããã€ããªïŒapkãå¯èœãªãã¹ãŠã®ããŒããŠã§ã¢æ§æçšã®ãã€ãã£ãã³ãŒã/ã©ã€ãã©ãªãå«ãã¢ããªã±ãŒã·ã§ã³ãåäœããŸãïŒã çæ³çã«ã¯ãNDKã³ã³ãã€ã©ã¯ããŸããŸãªæ§æã«å¯ŸããŠæ©èœçã«åçã®ã³ãŒããäœæããå¿
èŠãããããããã¡ãããã€ããªã®ã©ã€ãã©ãªïŒãŸãã¯ã€ã¡ãŒãžã®ã·ã¹ãã ã©ã€ãã©ãªïŒã¯åçã§ããå¿
èŠããããŸã-æ®å¿µãªãããããã¯å¿
ãããçŸå®ã«å¯Ÿå¿ãããç¹ã«æ€èšŒãå¿
èŠã§ãæé©åïŒNeonãSSEãªã©ïŒãšãµãŒãããŒãã£ã©ã€ãã©ãªã®äœ¿çšã«é¢ããŠã
ããã«ãAndroid OSãšãã®å¶åŸ¡äžã«ããããã€ã¹ã®éçºã«ãããOSã®ããŸããŸãªããŒãžã§ã³ããã®OSã®é
ä¿¡ãããã³ããã€ã¹ã®ä»æ§ãèªç¶ã«å€åããŠããŸãã å Žåã«ãã£ãŠã¯ãéçºè
ãäœããã®æé©åãŸãã¯å¥ã®ã³ã³ãã€ã©ã䜿çšããŠãã€ãã£ãã³ãŒããæ§ç¯ããããšãæ£åœåãããŸãã ããŸããŸãªæ§æã§ã®ãã®ã³ãŒãã®ããã©ãŒãã³ã¹ãæ£ç¢ºæ§ãå®å®æ§ã®è©äŸ¡ã¯ãAndroidãã€ãã£ããã¹ãã«æºãã£ãŠãããã¹ã¿ãŒã®ä»äºã§ãã
Androidã®ãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã®ã¢ã»ã³ãã«ããããã°ããã¹ãã®ããã»ã¹ã¯ãLinuxã®åãããã»ã¹ãšããã»ã©éãã¯ãããŸãããå¯äžã®éãã¯ãAndroidã§ã¯ãªããã¹ãïŒLinuxãMacOSãWindowsïŒã§ãã€ããªãã¡ã€ã«ïŒå®è¡å¯èœãã¡ã€ã«ããã³ã©ã€ãã©ãªïŒãåéããŠå®è¡ããããšã§ãAndroidããã€ã¹ïŒç©çãŸãã¯ãšãã¥ã¬ãŒã¿ïŒäžã ãããã£ãŠããã¹ããšAndroidããã€ã¹éã®æ®éçãªéä¿¡ææ®µã¯adb-Android Debug Bridgeã§ããããã¯Android SDKã®äžéšã§ãã ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã³ãããã°ããã«ã¯ãå¿
èŠãªããŒã«ãã§ãŒã³ãšAPIã䜿çšããããšããå§ãããŸãããŸããå¿
èŠã«å¿ããŠïŒc ++ã®å ŽåïŒèå³ã®ããstdc ++ã©ã€ãã©ãªã®ããŒãžã§ã³ã䜿çšããããšããå§ãããŸãã
Androidãã€ãã£ãã¢ã»ã³ããªã¯ã以äžã«ãã£ãŠç°ãªãå ŽåããããŸãã
- 䜿çšãããAPIããŒãžã§ã³ïŒ
- 䜿çšãããlibstdc ++ã®ããŒãžã§ã³ïŒ
- ããã€ã¹ã¢ãŒããã¯ãã£ïŒã¿ãŒã²ããïŒïŒ
- ãããæ·±åºŠïŒ32ã64ãŸãã¯x32ïŒã¿ãŒã²ããïŒ
- ãã«ããã¹ããšãã®å®¹éïŒ
ãã ããéçºè
ãšãã¹ã¿ãŒã®èгç¹ããã¯ããã«ããã¹ãã«å¿ããŠçµæã®ã³ãŒãã«éãã¯ãªããæ€èšŒãšãã¹ãã«ç°ãªããã«ããã¹ãæ§æã䜿çšããå¿
èŠã¯ãããŸããã
ãã¹ãã®ãªãã·ã§ã³ã®æ°ã¯å±éºãªã»ã©å¢ããŠãããCPUåœä»€ã®æé©åãèæ
®ããŠããŸããïŒneonãcore-avx2ãcore-i7ãatomãslm; ãµã€ãº\é床ãªã©ã«ãã£ãŠã åä¿¡ããã³ãŒãïŒãœãŒã¹ããã³ãã€ããªïŒã®ããªã¢ã³ãã®ãã®ãã«ã«ãç©ã¯ãã¹ãŠããã¹ãã®éå§ç¹ã§ãã ãã¹ãã®ç®çãããã€ã¹èªäœãŸãã¯Androidã®ã«ã¹ã¿ã ã¢ã»ã³ããªã®å Žåãäž»ãªéèŠãªéãã¯ãã€ãªããã¯ã©ã€ãã©ãªïŒAndroidã®libcã©ã€ãã©ãªã®é¡äŒŒç©ïŒã§ããå¯èœæ§ãæãé«ãã§ãããã
å
¥éçè«ãçµããããå®è·µã«ç§»ããŸãããã
æåçµã¿ç«ãŠããã³ãã¹ãçšã®ããŒã«
å¿
èŠãªããŒã«ã¯ãã¹ãŠAndroid NDKã«ä»å±ããŠãããLinuxãMacOSãWindowsã®32ããããš64ãããã§äœ¿çšã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãäœæããŠå®è¡ãã
gcc
bash-4.2$
g ++
bash-4.2$
ãã¹ããšã¿ãŒã²ããã®ã¢ãŒããã¯ãã£ãäžèŽãïŒéåžžx86ïŒãrootæš©éã䜿çšå¯èœãªå Žåããã¹ãã§Android x86ãã€ããªãèµ·åãããšãã«å·§åŠãªããªãã¯ã䜿çšããããšã¯éåžžã«å¯èœã§ãã ãããè¡ãã«ã¯ãã·ã¹ãã ã§Androidã®åçãªã³ã«ãŒïŒ/ system / bin /ãªã³ã«ïŒãæç€ºçã«äœ¿çšãããšãšãã«ããã¹ã«éã¹ããªããããŒãžã§ã³ã®bionicã䜿çšããå¿
èŠããããŸãïŒLD_LIBRARY_PATHïŒã Makefileã®äŸãåç
§ããŠãã ããïŒïŒ https://android.googlesource.com/platform/bionic/+/master/tests/Android.mkïŒbionic-unit-tests-run-on-host ïŒã
ãã®ãããªããªãã¯ã¯ãããšãã°ããšãã¥ã¬ãŒã¿ãªãã§ãã€ããªãã¡ã€ã«ãå®è¡ããå Žåã«é¢é£ããŸãïŒ64ãããã€ã¡ãŒãžããªãå ŽåããŸãã¯-mx32ã䜿çšããå ŽåïŒã
GCOVãšãããã¡ã€ã«
bash-4.2$
ãããã°\ãããã°ïŒGDB / logcat
bash-4.2$
ãã¹ãèªåå
ãã¹ããèªååããã«ã¯ãdejagnuã®ãããªãã¬ãŒã ã¯ãŒã¯ã䜿çšã§ããŸãã 2013幎2æãããDejaGnuã«ã¯androideabiããŒããå«ãŸããŠãããadbãä»ããŠAndroidã§ãã€ãã£ãã³ãŒãããã¹ãã§ããŸãã

äžè¬ã«ãããã€ãã®ãã¥ã¢ã³ã¹ãé€ããŠããã¹ãŠã¯äžèšã§èª¬æãããã®ã«äŒŒãŠããŸãã
å€ãã®dejagnuãã¹ãã§ã¯ããã¹ã/ã¿ãŒã²ããã®ããªãã«ãã§ãã¯ãéèŠã§ãã ããšãã°ãå°ãªããšãããã€ã¹ã§ãã€ããªãã¡ã€ã«ãå®è¡ã§ãããã©ãããçè§£ããããã«ãå€ãã®å Žåãhost = target = buildïŒnativeïŒããã§ãã¯ããŸãã ãã ãããã®ã±ãŒã¹ã§ã¯ãäžè¬çã«ã build_tripletã¯target_tripletãšçãããããŸããããåæã«Androidã§çµæãå®è¡ããã³åä¿¡ããããšãã§ããŸãã ããã«ãããã©ã«ãã§NDKã-fpicãã©ã°ã䜿çšãããšããäºå®ãèæ
®ããå¿
èŠããããŸããããã¯ããã¹ããšãã®çµæã®å®è¡ã«ã圱é¿ããŸãïŒæå¹ã¿ãŒã²ããpic / nonpicãã§ãã¯ïŒã éçãªã³ã¯ã®å Žåãããããããã¹ãŠãæåŸ
ãæºããããã§ã¯ãªãããšã念é ã«çœ®ãå¿
èŠããããŸãïŒéçã©ã€ãã©ãªãšåçã©ã€ãã©ãªã¯ããããèªäœã§ç°ãªããç°ãªãã³ãŒããçæããå ŽåããããŸãïŒ -fpic / -fpie ïŒãã¹ã¿ãŒãã¢ãããã£ã¬ã¯ããªãŸãã¯çµæã®ãã£ã¬ã¯ããªã®æå®ãããã³ãã€ããªãã¡ã€ã«ãéå§ããåã«ããã£ã¬ã¯ããªãç®çã®ãã£ã¬ã¯ããªã«å€æŽããå¿
èŠããããŸããããã«ãããã€ã¹ãžã®ãã€ããªãã¡ã€ã«ã®è»¢éäžã«ãèµ·åæš©ããªã»ããã§ããŸãïŒãã©ã«ãæš©éãŸãã¯ãã¡ã€ã«ã·ã¹ãã æš©éã«ããïŒ ïŒãããã§èª¬åŸãã䟡å€ããã SYAå®è¡å¯èœãã¡ã€ã«ãå®è¡ããããèšå®ãããŠããããšããŸããçµç¹ããã¹ãããããã®æåã®è§£æ±ºçã¯ãæåã®æ¥éãªæ¶èãé¿ããããã«é©åãªæš©éãæã€éSDã«ãŒããšRAMãã£ã¹ã¯ã䜿çšããããšã§ãã
Androidã§ãã¹ããéå§ããã«ã¯ããã¹ãã«dejagnuãã€ã³ã¹ããŒã«ããŠå®è¡ããã ãã§ååã§ãã
runtest âtarget_board = androideabi
ããã€ã¹ã®ã·ãªã¢ã«çªå·ã«å¯Ÿå¿ããADB_SERIAL倿°ãæç€ºçã«æå®ããããã«ããŠãã ããã
ãã ããããŒã«ã«æ§æãã¡ã€ã«-site.expã䜿çšããŠãã¹ããå®è¡ããæ¹ãã¯ããã«äŸ¿å©ã§å¿«é©ã§ãã
ããšãã°ã gcc testsuiteãå®è¡ããããã®æ§æãã¡ã€ã«ïŒ
set rootme â.â set tmpdir â.â set srcdir â/path/to/gcc_%version%_release/gcc/testsuiteâ set CFLAGS ââ set CXXFLAGS ââ set GDB â/path/to/GDB_UNDER_TESTâ set GCOV_UNDER_TEST â/path/to/GCOV_UNDER_TESTâ set GCC_UNDER_TEST â/path/to/GCC_UNDER_TESTâ set GXX_UNDER_TEST â/path/to/GXX_UNDER_TESTâ set GFORTRAN_UNDER_TEST ânoâ set OBJC_UNDER_TEST ânoâ set libiconv ââ set HOSTCC âgccâ set HOSTCFLAGS ââ set TESTING_IN_BUILD_TREE 1 set GMPINC ââ set ENABLE_LTO 1 set HAVE_LIBSTDCXX_V3 1 set host_triplet i686-pc-linux-gnu set build_triplet i686-pc-linux-gnu set target_triplet i686-pc-linux-android-gnu set target_alias i686-pc-linux-android set android_tmp_dir â/temporary/folder/on/device/with/executable/permissionsâ set bridge_tmp_dir â/temporary/folder/on/device/with/executable/permissionsâ append boards_dir â/path/to/share/dejagnu/baseboardsâ
åãgccãå®è¡ããã«ã¯ïŒ
export ADB_SERIAL=$ANDROID_SERIAL make -j $parallel check DEJAGNU=/path/to/site.exp RUNTESTFLAGS=ââtarget_board=androideabiâ
泚ïŒgccãã§ãã¯ã®éå§æã«gcc_exec_Prefix倿°ã誰ãã«ãã£ãŠåé€ãããŠããªãããšãããã³èšå®ãããŠããªãããšã確èªããå¿
èŠãããããšã«æ³šæããŠãã ããã
ã³ã³ãã€ã©ãžã®ãã¹ãæå®ããã ãã§ãªããäžèšã§æåã§è¡ã£ããã¹ãŠã®ããšãã€ãŸã次ã®ããšãå¿ããªãã§ãã ããã
- sysroot
- ã©ã€ãã©ãªãšããããŒãã¡ã€ã«ãžã®ãã¹
- ãã©ã°ãšãã©ã°ã€ã³ïŒå°ãªããšãlibstdc ++ã«ãŒã©ãŒã®å ŽåïŒ
ããã«åºã¥ããŠãæè¯ã®è§£æ±ºçã¯ãããŒã«ãã§ãŒã³ããã®å®è¡å¯èœãã¡ã€ã«ã®ã©ãããŒïŒwrapper-binarynameïŒã䜿çšããããšã§ãã
wrapper-gcc
wrapper-g ++
å¿
èŠã«å¿ããŠãAndroidããããŒã¿ãååŸããå¿
èŠãããå Žåã¯ã remote_upload颿°ïŒ adb_uploadïŒ
target_board %% source %% destïŒ
ïŒã䜿çšã§ããŸãã ãã®æ©èœã¯ãã¹ãã¹ã€ãŒãã§æäŸããå¿
èŠããããŸãã
ãããã¡ã€ãªã³ã°ãããã©ãŒãã³ã¹ãã¹ã
ãããã¡ã€ã«ã®åéãšäœ¿çšã®åŸ®åŠãªéãã«ã€ããŠã¯ããã®èšäºã§ã¯è©³ãã説æããŸããããAndroidã®å Žåããããã¡ã€ãªã³ã°çšã®æãäžè¬çãªãŠãŒãã£ãªãã£ã¯æ¬¡ã®ãšããã§ãã
- æ§èœ
- ãããã£ãŒã«
- 9æ
ããšãã°ãéçãªperfã¢ã»ã³ããªãããå Žåãããã§ååã§ãïŒ
adb push perf /data/local/ adb shell cd /data/local chmod 777 perf perf record ./coremark.exe 0Ã0 0Ã0 0Ã66 0 7 1 2000
Dalvikãä»ããŠåäœãããã³ãããŒã¯ã®å©ãã ãã§ãªãããã€ãã£ãã¬ãã«ãã€ãŸãAndroidã®ããã©ãŒãã³ã¹ããã¹ãããããšãã§ããŸãã åãAndroid NDKã«ãã£ãŠã³ã³ãã€ã«ããããã³ãããŒã¯ã䜿çšããŸãã äŸïŒ SPEC ã EEMBC ã CoreMark ã



Androidçšã®ãã¬ãŒã ã¯ãŒã¯ã®ç§»æ€ã®ãã¥ã¢ã³ã¹ã«ã€ããŠã¯è§ŠããŸãããïŒäžèšã®æ¹æ³ã«äŒŒãŠããŸãïŒãããã€ã¹ãŸãã¯ãšãã¥ã¬ãŒã¿ãŒã§äœæ¥ããããã«adbã䜿çšãããšããååãšããã¹ãŠã«åºã¥ããŠè¡ãããããã»ã¹ãžã®éèŠãªæ³šæã«æ³šç®ãã䟡å€ããããŸãããã€ã¹ã
çµæãæ¬¡ã®åœ±é¿ãåããããšã確èªããå¿
èŠããããŸãã
- ããã»ããµã¢ãŒã
- ããã¯ã°ã©ãŠã³ãã§å®è¡ãããŠããã¢ããªã±ãŒã·ã§ã³
- ã¯ãªãŒã³ãªèµ·åãããã³ãšã©ãŒïŒlogcat / dmesgã䜿çšããŠè¿œè·¡ã§ããŸãïŒ
é¢é£ããçµæã¯ã確å®çãªããã€ã¹ã§ã®ã¿ååŸã§ããŸãïŒããã€ã¹ãšã¢ããªã±ãŒã·ã§ã³ã®å®éã®äœ¿çšã®ãããã¡ã€ã«ãååŸããåé¡ã§ãªãå ŽåïŒã ãããã£ãŠãéå§ããåã«ã次ã®ããšã確èªããå¿
èŠããããŸãã
- ãã¹ãŠã®ã»ã«ã³ããªãµãŒãã¹ãšã¢ããªã±ãŒã·ã§ã³ãç¡å¹ã«ããŸãã
- ããã€ã¹ã¯æä»çã«äœ¿çšãããŸã
- ããã€ã¹ã«ã¯ããŒãã»ããæäœã¢ãŒãããããŸã
ããšãã°ãCPUããã¹ãããå Žåã®äžè¬çãªæ¹æ³ã¯ããã¹ãŠã®ããã»ããµã³ã¢ãšåšæ³¢æ°ãåãå€ã«èšå®ããŠä¿®æ£ããããšã§ãã å¿
èŠã«å¿ããŠããã¹ããè¡ââãããŠããã³ã¢ãé€ããã¹ãŠã®ã³ã¢ãç¡å¹ã«ããŸãã
adb shell echo userspace > /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor echo 2000000 > /sys/devices/system/cpu/cpuX/cpufreq/scaling_max_freq echo 2000000 > /sys/devices/system/cpu/cpuX/cpufreq/scaling_min_freq
å€ã
/ sys / devices / system / cpu / cpuX / cpufreq / onlineãããã³ãããŒã¯\ãããã¡ã€ã«ããã³\ãŸãã¯ãã¹ãã®ããŒãºã«å¿ããŠæ£ããã€ã³ã¹ããŒã«ãããŸãã
ãã¹ãŠãæ£ããã¢ãŒãïŒcat / proc / cpuinfoïŒã§åäœããããšã確èªããŠåããŠããã¹ããšåæãéå§ã§ããŸãã
äœæ¥ãç°¡çŽ åãããã€ãã£ãã³ãŒãããããã°ããããã«ãAndroidã«ã¯ãAndroidã®ããã©ã«ãã®é
ä¿¡ã«å«ãŸããªãbusyboxãŠãŒãã£ãªãã£ã®ã»ããããããŸãïŒGPL 2.0ã©ã€ã»ã³ã¹ã§é
ä¿¡ãããããïŒã
[, [[, ar, arp, awk, base64, basename, bbconfig, beep, blkid, blockdev, bootchartd, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cttyhack, cut, dc, dd, deallocvt, depmod, devmem, diff, dirname, dmesg, dnsd, dos2unix, dpkg, dpkg-deb, du, dumpkmap, echo, ed, egrep, env, envdir, envuidgid, expand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs, flash_lock, flash_unlock, flashcp, flock, fold, free, freeramdisk, fsync, ftpd, ftpget, ftpput, fuser, getopt, grep, gunzip, gzip, halt, hd, hdparm, head, hexdump, httpd, hwclock, ifconfig, ifdown, ifup, init, inotifyd, insmod, install, iostat, ip, ipaddr, ipcalc, iplink, iproute, iprule, iptunnel, klogd, less, linuxrc, ln, loadkmap, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lsof, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, mkdir, mkfifo, mknod, mkswap, mktemp, modinfo, modprobe, more, mpstat, mv, nbd-client, nc, netstat, nice, nmeter, nohup, od, openvt, patch, pidof, ping, pipe_progress, pmap, popmaildir, poweroff, powertop, printenv, printf, ps, pscan, pstree, pwd, pwdx, raidautorun, rdev, readlink, readprofile, realpath, reboot, reformime, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setconsole, setkeycodes, setlogcons, setserial, setsid, setuidgid, sha1sum, sha256sum, sha3sum, sha512sum, showkey, sleep, smemcap, softlimit, sort, split, start-stop-daemon, strings, stty, sum, sv, svlogd, switch_root, sync, sysctl, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute, true, ttysize, tunctl, tune2fs, udpsvd, uname, uncompress, unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, usleep, uudecode, uuencode, vconfig, vi, volname, watch, wc, wget, which, whoami, whois, xargs, xz, xzcat, yes, zcat
ãã®èšäºã§èª¬æãããŠããã¢ãããŒãã䜿çšãããšããã¹ããLinuxããAndroidã«ãã°ããç°¡åã«ç§»æ€ãããŒãããäœæããããŸããŸãªããŒããŠã§ã¢æ§æãšãšãã¥ã¬ãŒã¿ãŒã®ãããã°ãæçæéã§è¡ãããšãã§ããŸãã