½øÈëandroid shellºó»á´òÓ¡£º
sh: can't access tty; job control turned off
ÊäÈëtab¼üûÓв¹È«£¬ÊäÈëctrl+cûÓÐÖÕÖ¹µ½ÏÂÒ»ÐУ¬¶øÊÇÊäÈëÒ»¸öÂÒÆß°ËÔãµÄ×Ö·û£¬
ûÓÐcpÃüÁîµÈµÈµÈµÈ£¬
Äã»á·¢ÏÖ£¬ÕâËûÂ軹ÊÇlinuxÂð,ÕâÈÕ×Óû·¨¹ýÁË£¬¼òÖ±£¡
ÒªÖ§³ÖһЩ³£ÓõÄÃüÁ
ÐèÒªÖØÐ±àÒëÒ»¸öbusybox£¬
make menuconfig
ÏÈÑ¡ÔñÄãÏëÒªµÄÄÇЩÃüÁȻºóÈç¹ûÒªÖ§³Ötab²¹È«µÄ»°£¬
Ñ¡Ôñ£¬
Busybox Settings-->
Busybox Library Tuning-->
Tab completion
Ñ¡ÖоͿÉÒÔÁË
È»ºó½øÈëandroid´®¿Ú£¬Ö´ÐÐbusybox sh
¾Í¿ÉÒÔÁË¡£
ĬÈÏûÓÐcpº¯Êý£¬
ÏÈÖØÐÂmountÒ»ÏÂT¿¨(ĬÈϵļÓÔØT¿¨µÄ·½Ê½ÊDz»Ö§³Ö¸Ä±äȨÏ޵ģ©£¬
È»ºó
cd /sdcard
chmod 777 busybox
./busybox cp ./busybox /data/bin/
¾Í¿ÉÒÔÁË¡£
²¹È«µÄÔÀíÈçÏ£º
±¾ÖÊÒ²¾ÍÊǶÁµ½tab¼ü¾Í¿ªÊ¼²éÕÒ£¬ÕÒµ½Æ¥ÅäµÄ¾ÍÏÔʾ³öÀ´¡£
ÖÁÓÚctrl+c²»Ö§³ÖµÄ½â¾ö°ì·¨ÊÇ£º
ÐÞ¸Äsystem/core/init/init.c ÀïÃæµÄ
static char *console_name = "/dev/ttyS2";
ÕâÀïÒÔǰÊÇ/dev/console,
ÖØÐ±àÒ룺
source build/envsetup.sh
mmm system/core/init/
°Ñ±àÒë³öÀ´µÄinit·Åµ½ÄÚºËÀïÃæµÄrootĿ¼£¬
ÖØÐÂ×öÒ»¸öÄÚºËÉÕ½ø ......
1.ÒýÑÔ
¡¡¡¡C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ¡£×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ£¬C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã£¨±»ÊÀÈ˳ÆÎª“²»³¹µ×µØÃæÏò¶ÔÏ󔣩£¬Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚÈκÎÀàµÄÈ«¾Ö±äÁ¿ºÍº¯Êý¡£µ«ÊÇ£¬C++±Ï¾¹ÊÇÒ»ÖÖÃæÏò¶ÔÏóµÄ³ÌÐòÉè¼ÆÓïÑÔ£¬ÎªÁËÖ§³Öº¯ÊýµÄÖØÔØ£¬C++¶ÔÈ«¾Öº¯ÊýµÄ´¦Àí·½Ê½ÓëCÓÐÃ÷ÏԵIJ»Í¬¡£
¡¡¡¡2.´Ó±ê׼ͷÎļþ˵Æð
¡¡¡¡Ä³ÆóÒµÔø¾¸ø³öÈçϵÄÒ»µÀÃæÊÔÌ⣺
¡¡¡¡ÃæÊÔÌâ
¡¡¡¡ÎªÊ²Ã´±ê׼ͷÎļþ¶¼ÓÐÀàËÆÒÔϵĽṹ£¿
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */
¡¡¡¡·ÖÎö
¡¡¡¡ÏÔÈ»£¬Í·ÎļþÖеıàÒëºê“#ifndef __INCvxWorksh¡¢#define __INCvxWorksh¡¢#endif” µÄ×÷ÓÃÊÇ·ÀÖ¹¸ÃÍ·Îļþ±»Öظ´ÒýÓá£
¡¡¡¡ÄÇô
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
¡¡¡¡µÄ×÷ÓÃÓÖÊÇÊ²Ã´ÄØ£¿ÎÒÃǽ«ÔÚÏÂÎÄÒ»Ò»µÀÀ´¡£
¡¡¡¡3.Éî²ã½ÒÃÜextern "C"
¡¡¡¡extern "C" °üº¬Ë«Öغ¬Òå£ ......
1.ÒýÑÔ
¡¡¡¡C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ¡£×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ£¬C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã£¨±»ÊÀÈ˳ÆÎª“²»³¹µ×µØÃæÏò¶ÔÏ󔣩£¬Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚÈκÎÀàµÄÈ«¾Ö±äÁ¿ºÍº¯Êý¡£µ«ÊÇ£¬C++±Ï¾¹ÊÇÒ»ÖÖÃæÏò¶ÔÏóµÄ³ÌÐòÉè¼ÆÓïÑÔ£¬ÎªÁËÖ§³Öº¯ÊýµÄÖØÔØ£¬C++¶ÔÈ«¾Öº¯ÊýµÄ´¦Àí·½Ê½ÓëCÓÐÃ÷ÏԵIJ»Í¬¡£
¡¡¡¡2.´Ó±ê׼ͷÎļþ˵Æð
¡¡¡¡Ä³ÆóÒµÔø¾¸ø³öÈçϵÄÒ»µÀÃæÊÔÌ⣺
¡¡¡¡ÃæÊÔÌâ
¡¡¡¡ÎªÊ²Ã´±ê׼ͷÎļþ¶¼ÓÐÀàËÆÒÔϵĽṹ£¿
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */
¡¡¡¡·ÖÎö
¡¡¡¡ÏÔÈ»£¬Í·ÎļþÖеıàÒëºê“#ifndef __INCvxWorksh¡¢#define __INCvxWorksh¡¢#endif” µÄ×÷ÓÃÊÇ·ÀÖ¹¸ÃÍ·Îļþ±»Öظ´ÒýÓá£
¡¡¡¡ÄÇô
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
¡¡¡¡µÄ×÷ÓÃÓÖÊÇÊ²Ã´ÄØ£¿ÎÒÃǽ«ÔÚÏÂÎÄÒ»Ò»µÀÀ´¡£
¡¡¡¡3.Éî²ã½ÒÃÜextern "C"
¡¡¡¡extern "C" °üº¬Ë«Öغ¬Òå£ ......
ǰһƪÎÒÃǽéÉÜÁËÒ»¸ö¼òµ¥²»¹ýµÄhelloworld³ÌÐòÒý³öÏà¹ØÎÊÌâ¡£³Ã×Å»¹Ã»ÓÐÍüµôÄÇЩ˼¿¼·½Ê½µÄ¼ÇÒ䣬±¾Æª¼ÌÐøÑÓÐøÕâÖÖ˼ά·½Ê½µÄÀíÄ½éÉÜÒ»ÏÂCC++ÖеĻù±¾Êý¾ÝÀàÐÍ¡£Êý¾ÝÀàÐͲ»Çå³þµÄ»°ÔÚÒÔºóµÄ±à³ÌÖлáÓкܶàÃÕÍźÍÎÊÌâ¡£ÉõÖÁÒ»¸ö³ÌÐòµÄBUGÕÒ°ëÌìҲûÓÐÕÒ³öÀ´Ê±ÎªÊ²Ã´£¬½á¹û²Å·¢ÏÖÊǼӼõÒç³öÁË¡£¸ü¼ÓÑÏÖØµÄ»¹ÓÐдԽ½ç¡¢¶ÁÔ½½çµÈ¡£Í¬Ñù±ÈÈçÍøÂç´«ÊäʱµÄÏûÏ¢½á¹¹¶Ô´ýÿ¸ö×Ö½Ú£¬Ã¿¸ö³ÉÔ±µÄ´óС¼°ÀàÐͶ¼ÓкÜÑϸñµÄ×·Çó¡£ÏÂÃæÎÒÃǾÍÖð¸ö½øÐнéÉÜ¡£
Ê×ÏÈ¡¢ÎÒÃÇ¿´32λµÄÕûÊý£ºint ¡¢unsigned int¡¢long¡¢unsigned long ¡£ÕâЩ¶¼ÊÇ»ù±¾ÀàÐÍ£¬Ã»ÓÐunsigned¹Ø¼ü×ÖµÄÊÇÓзûºÅµÄ£¬·´Ö®ÊÇÎÞ·ûºÅµÄ¡£»¹ÓбÈÈçDWORD¡¢ UINTÕâЩҲֻÊÇд±ðÃû£¨typedef£©¶øÒÑ¡£ÓзûºÅÕûÊýÖµµÃ×¢ÒâµÄÊÇʲô·¶Î§ÄÚÊÇÕýÊý£¬Ê²Ã´·¶Î§ÊǸºÊý¡£ÕâÑù¶ÔÓÚ¼Ó¼õÔËËã¡¢±È½ÏÔËËãµÈÓкܴó°ïÖú£¬·ñÔòºÜÈÝÒ×Òç³ö»òÕ߱ȽϴíÎó¡£¾Ù¸öÀý×Ó£º
unsigned int loop = 5;
for ( ; loop >= 0; --loop )
{
.......
}
ÕâÑùÒ»¸öÑ»·£¬ÉÔ΢²»×¢Òâ¡£¾ÍÈÏΪËüÊdzÉÁ¢µÄ£¬ÆäʵËûÊÇÒ»¸öËÀÑ»·¡£ÕâÀï»á¼õµ½0£¬³ÉÁ¢¼ÌÐø¼õ¡£ÓÉÓÚÊÇÎÞ·ûºÅ£¬½«¼õ³É×î´óµÄ32λÎÞ·ûºÅÕûÊý£º0xffffffff. Ö®ºó¼ÌÐø¼õ£ ......
ǰһƪÎÒÃǽéÉÜÁËÒ»¸ö¼òµ¥²»¹ýµÄhelloworld³ÌÐòÒý³öÏà¹ØÎÊÌâ¡£³Ã×Å»¹Ã»ÓÐÍüµôÄÇЩ˼¿¼·½Ê½µÄ¼ÇÒ䣬±¾Æª¼ÌÐøÑÓÐøÕâÖÖ˼ά·½Ê½µÄÀíÄ½éÉÜÒ»ÏÂCC++ÖеĻù±¾Êý¾ÝÀàÐÍ¡£Êý¾ÝÀàÐͲ»Çå³þµÄ»°ÔÚÒÔºóµÄ±à³ÌÖлáÓкܶàÃÕÍźÍÎÊÌâ¡£ÉõÖÁÒ»¸ö³ÌÐòµÄBUGÕÒ°ëÌìҲûÓÐÕÒ³öÀ´Ê±ÎªÊ²Ã´£¬½á¹û²Å·¢ÏÖÊǼӼõÒç³öÁË¡£¸ü¼ÓÑÏÖØµÄ»¹ÓÐдԽ½ç¡¢¶ÁÔ½½çµÈ¡£Í¬Ñù±ÈÈçÍøÂç´«ÊäʱµÄÏûÏ¢½á¹¹¶Ô´ýÿ¸ö×Ö½Ú£¬Ã¿¸ö³ÉÔ±µÄ´óС¼°ÀàÐͶ¼ÓкÜÑϸñµÄ×·Çó¡£ÏÂÃæÎÒÃǾÍÖð¸ö½øÐнéÉÜ¡£
Ê×ÏÈ¡¢ÎÒÃÇ¿´32λµÄÕûÊý£ºint ¡¢unsigned int¡¢long¡¢unsigned long ¡£ÕâЩ¶¼ÊÇ»ù±¾ÀàÐÍ£¬Ã»ÓÐunsigned¹Ø¼ü×ÖµÄÊÇÓзûºÅµÄ£¬·´Ö®ÊÇÎÞ·ûºÅµÄ¡£»¹ÓбÈÈçDWORD¡¢ UINTÕâЩҲֻÊÇд±ðÃû£¨typedef£©¶øÒÑ¡£ÓзûºÅÕûÊýÖµµÃ×¢ÒâµÄÊÇʲô·¶Î§ÄÚÊÇÕýÊý£¬Ê²Ã´·¶Î§ÊǸºÊý¡£ÕâÑù¶ÔÓÚ¼Ó¼õÔËËã¡¢±È½ÏÔËËãµÈÓкܴó°ïÖú£¬·ñÔòºÜÈÝÒ×Òç³ö»òÕ߱ȽϴíÎó¡£¾Ù¸öÀý×Ó£º
unsigned int loop = 5;
for ( ; loop >= 0; --loop )
{
.......
}
ÕâÑùÒ»¸öÑ»·£¬ÉÔ΢²»×¢Òâ¡£¾ÍÈÏΪËüÊdzÉÁ¢µÄ£¬ÆäʵËûÊÇÒ»¸öËÀÑ»·¡£ÕâÀï»á¼õµ½0£¬³ÉÁ¢¼ÌÐø¼õ¡£ÓÉÓÚÊÇÎÞ·ûºÅ£¬½«¼õ³É×î´óµÄ32λÎÞ·ûºÅÕûÊý£º0xffffffff. Ö®ºó¼ÌÐø¼õ£ ......
ÔÚºÏ×÷¿ª·¢Ê±£¬C#ʱ³£ÐèÒªµ÷ÓÃC++DLL£¬µ±´«µÝ²ÎÊýʱʱ³£Óöµ½ÎÊÌ⣬ÓÈÆäÊÇ´«µÝºÍ·µ»Ø×Ö·û´®ÊÇ£¬ÏÖ×ܽáһϣ¬·ÖÏí¸ø´ó¼Ò£º
VC++ÖÐÖ÷Òª×Ö·û´®ÀàÐÍΪ£ºLPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTRµÈ
µ«×ªÎªC#ÀàÐÍÈ´²»ÍêÈ«Ïàͬ¡£
Ö÷ÒªÓÐÈçϼ¸ÖÖת»»£º
½«stringתΪIntPtr£ºIntPtr System.Runtime.InteropServices.Marshal.StringToCoTaskMemAuto(string)
½«IntPtrתΪstring£ºstring System.Runtime.InteropServices.MarshalPtrToStringAuto(IntPtr)
ÀàÐͶÔÕÕ£º
BSTR --------- StringBuilder
LPCTSTR --------- StringBuilder
LPCWSTR --------- IntPtr
handle---------IntPtr
hwnd-----------IntPtr
char *----------string
int * -----------ref int
int &-----------ref int
void *----------IntPtr
unsigned char *-----ref byte
StructÐèÒªÔÚC#ÀïÖØÐ¶¨ÒåÒ»¸öStruct
CallBack»Øµ÷º¯ÊýÐèÒª·â×°ÔÚÒ»¸öίÍÐÀdelegate static extern int FunCallBack(string str);
×¢ÒâÔÚÿ¸öº¯ÊýµÄÇ°Ãæ¼ÓÉÏpublic static extern +·µ»ØµÄÊý¾ÝÀàÐÍ,Èç¹û²»¼Ópublic ,º¯ÊýĬÈÏΪ˽Óк¯Êý£¬µ÷Óþͻá³ö´í¡£
ÔÚC#µ÷ÓÃC++ DLL·â×°¿âʱ»á³öÏÖÁ½¸öÎ ......
ÔÚºÏ×÷¿ª·¢Ê±£¬C#ʱ³£ÐèÒªµ÷ÓÃC++DLL£¬µ±´«µÝ²ÎÊýʱʱ³£Óöµ½ÎÊÌ⣬ÓÈÆäÊÇ´«µÝºÍ·µ»Ø×Ö·û´®ÊÇ£¬ÏÖ×ܽáһϣ¬·ÖÏí¸ø´ó¼Ò£º
VC++ÖÐÖ÷Òª×Ö·û´®ÀàÐÍΪ£ºLPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTRµÈ
µ«×ªÎªC#ÀàÐÍÈ´²»ÍêÈ«Ïàͬ¡£
Ö÷ÒªÓÐÈçϼ¸ÖÖת»»£º
½«stringתΪIntPtr£ºIntPtr System.Runtime.InteropServices.Marshal.StringToCoTaskMemAuto(string)
½«IntPtrתΪstring£ºstring System.Runtime.InteropServices.MarshalPtrToStringAuto(IntPtr)
ÀàÐͶÔÕÕ£º
BSTR --------- StringBuilder
LPCTSTR --------- StringBuilder
LPCWSTR --------- IntPtr
handle---------IntPtr
hwnd-----------IntPtr
char *----------string
int * -----------ref int
int &-----------ref int
void *----------IntPtr
unsigned char *-----ref byte
StructÐèÒªÔÚC#ÀïÖØÐ¶¨ÒåÒ»¸öStruct
CallBack»Øµ÷º¯ÊýÐèÒª·â×°ÔÚÒ»¸öίÍÐÀdelegate static extern int FunCallBack(string str);
×¢ÒâÔÚÿ¸öº¯ÊýµÄÇ°Ãæ¼ÓÉÏpublic static extern +·µ»ØµÄÊý¾ÝÀàÐÍ,Èç¹û²»¼Ópublic ,º¯ÊýĬÈÏΪ˽Óк¯Êý£¬µ÷Óþͻá³ö´í¡£
ÔÚC#µ÷ÓÃC++ DLL·â×°¿âʱ»á³öÏÖÁ½¸öÎ ......
·Ç³£»ù±¾¹ØÓÚCÓïÑÔµÄÎÊÌâ,Ò»¸öÐÅÏ¢Àà(¼ÆËã»ú,×ÊѶ¹¤³Ì,µç×Ó¹¤³Ì, ͨÐŹ¤³Ì)רҵµÄ±¾¿Æ±ÏÒµÉúÓ¦¸Ã´ïµ½µÄˮƽ¡£ÌâÄ¿²»ÄÑ,È«²¿¶¼ÄÜ¿ìËٵشðÍ꣬µ±È»Ò²ÐèÒªÒ»¶¨µÄ֪ʶ´¢±¸¡£
¶ÔÓÚ´ó¶àÊýÈË£¬ÎÒÃÇÔ¤ÆÚÄã¿ÉÄÜ´ð´í 3) 4) 15)Ì⣬ËùÒÔ´ð´í3µÀÒÔÄڵģ¬ÎÒÃÇÈÏΪÄãºÜ°ô
´ð´í5µÀÌâÒÔÄÚ£¬ÎÒÃÇÈÏΪÄ㻹²»´í(Ä㻹¿ÉÄÜ´ð´íµÚ9Ìâ)
Èç¹ûÄãÓÐ6µÀÒÔÉϵÄÌâÄ¿²»ÄÜ´ð¶Ô,»ù±¾ÉÏÎÒÃǶ¼²»ºÃ˵ʲôÁË....
Ô¼¶¨:
1) ÏÂÃæµÄ²âÊÔÌâÖУ¬ÈÏΪËùÓбØÐëµÄÍ·Îļþ¶¼ÒѾÕýÈ·µÄ°üº¬ÁË
2)Êý¾ÝÀàÐÍ
char Ò»¸ö×Ö½Ú 1 byte
int Á½¸ö×Ö½Ú 2 byte (16λϵͳ£¬ÈÏΪÕûÐÍÊÇ2¸ö×Ö½Ú)
long int Ëĸö×Ö½Ú 4 byte
float Ëĸö×Ö½Ú4 byet
double °Ë¸ö×Ö½Ú 8 byte
long double Ê®¸ö×Ö½Ú 10 byte
pointer Á½¸ö× ......
Ïêϸ²Î¿¼´ð°¸
µÚ1Ìâ: (b)
volatile×ÖÃæÒâ˼ÊÇÒ×ÓÚ»Ó·¢µÄ¡£Õâ¸ö¹Ø¼ü×ÖÀ´ÃèÊöÒ»¸ö±äÁ¿Ê±£¬Òâζ×Å ¸ø¸Ã±äÁ¿¸³Öµ(дÈë)Ö®ºó£¬ÂíÉÏÔÙ¶ÁÈ¡£¬Ð´ÈëµÄÖµÓë¶ÁÈ¡µÄÖµ¿ÉÄܲ»Ò»Ñù,ËùÒÔ˵Ëü"ÈÝÒ×»Ó·¢"µÄ¡£
ÕâÊÇÒòΪÕâ¸ö±äÁ¿¿ÉÄÜÒ»¸ö¼Ä´æÆ÷£¬Ö±½ÓÓëÍⲿÉ豸ÏàÁ¬£¬ÄãдÈëÖ®ºó£¬¸Ã¼Ä´æÆ÷Ò²ÓпÉÄܱ»ÍⲿÉ豸µÄд²Ù×÷Ëù¸Ä±ä;»òÕߣ¬¸Ã±äÁ¿±»Ò»¸öÖжϳÌÐò£¬»òÁíÒ»¸ö½ø³Ì
¸Ä±äÁË.
volatile ²»»á±»±àÒëÆ÷ÓÅ»¯Ó°Ï죬ÔÚlongjump ºó,ËüµÄÖµ ÊǺóÃæ¼Ù¶¨µÄ±äÁ¿Öµ,b×îºóµÄÖµÊÇ5,ËùÒÔ5±»´òÓ¡³öÀ´.
setjmp : ÉèÖ÷Ǿֲ¿Ìø×ª /* setjmp.h*/
Stores context information such as register values so that the lomgjmp function can return control to the statement following the one calling setjmp.Returns 0 when it is initially called.
Lonjjmp: Ö´ÐÐÒ»¸ö·Ç¾Ö²¿Ìø×ª /* setjmp.h*/
Transfers control to the statement where the call to setjmp (which initialized buf) was made. Execution continues at this point as if longjmp cannot return the value 0.A nonvolatile automatic variable might be changed by a call to longjmp.When you use setjmp and longjmp, the onl ......