原创 Android編譯常見錯誤

1. /usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory 解決方法:sudo apt-get install gcc

原创 堆和棧的區別

一個由C/C++編譯的程序佔用的內存分爲以下幾個部分  1、棧區(stack)―   由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧;  2、堆區(heap) ―   一般由程序員分配釋放, 若程

原创 Android源碼下載(最新可用)

1、下載repo工具 curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ./repo cp repo /bin/repo chmod a+x /bin/

原创 ubuntu 12.04下手動安裝jdk6

1)JDK6的下載地址: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html 2)把jdk-

原创 AndroidManifest.xml文件解析

一些規則: 元素:在所有的元素中只有<manifest>和<application>是必需的,且只能出現一次。如果一個元素包含有其他子元素,必須通過子元素的屬性來設置其值。處於同一層次的元素,這些元素的說明是沒有順序的。屬性:按照常理,

原创 在Linux內核中打印日誌時間戳

在編譯Linux內核,配置時:make menuconfig ---> Kernel hacking --> show timing information on printks

原创 Windows下使用adb連接時提示:adb server is out of date. killing...

1)執行adb.exe devices,下面錯誤提示:adb server is out of date.  killing... ADB server didn't ACK * failed to start daemon * erro

原创 [kernel]休眠等待一個事件結束或條件滿足後再執行

可以使用兩種方法:等待隊列和完成變量 (1)等待隊列 1)先定義全局變量: int flags = 0; wait_queue_head_t    select_wait; 2)在初始化函數中初始化等待隊列頭: init_waitqueu

原创 Android.mk簡介

1、Android.mk中所有的變量都是全局的,因此要儘量少聲明變量。 2、Android.mk文件首先需要指定LOCAL_PATH變量,用於查找源文件。 LOCAL_PATH:=$(call my-dir) 表示當前文件的路徑 3、in

原创 Android如何切換分支

~/project/android$ cd .repo/manifests~/project/android_2.3.1_r1/.repo/manifests$ git branch -a | cut -d / -f 3 以 andro

原创 volatile的用法

由於訪問寄存器的速度要快過RAM,所以編譯器一般都會作減少存取外部RAM的優化。volatile修飾的變量防止被編譯器優化,主要用在多線程程序中。 (當編譯器進行優化時,它有時會取一些值的時候,直接從寄存器裏進行存取,而不是從內存中獲取,

原创 const的用法

C++中爲什麼會引入const? 1.大家知道,C++有一個類型嚴格的編譯系統,這使得C++程序的錯誤在編譯階段即可發現許多,從而使得出錯率大爲減少,因此,也成爲了C++與C相比,有着突出優點的一個方面。 2. C中很常見的預處理指令 #

原创 static的用法

static關鍵字是C, C++中都存在的關鍵字, 它主要有三種使用方式: (1)局部靜態變量; (2)外部靜態變量/函數; (3)靜態數據成員/成員函數; 一、局部靜態變量在C/C++中, 局部變量按照存儲形式可分爲三種auto, st

原创 從上層APP到底層驅動的調用過程

1. 上層應用APP 1)源文件: packages/experimental/Freg/ ├── AndroidManifest.xml ├── Android.mk ├── res │   ├── drawable │   │   └

原创 向Linux內核添加新的驅動程序

1. drivers目錄增加新的目錄freg freg/ ├── freg.c ├── freg.h ├── Kconfig └── Makefile 2. 在新增的目錄中增加Makefile和Kconfig文件,上面的目錄中已經添加.