1. 程式人生 > >編譯適配小米2S的CM Linux核心原始碼及問題解決

編譯適配小米2S的CM Linux核心原始碼及問題解決

1. 下載核心原始碼

首先進入CM官網與小米2S相關的頁面:

http://wiki.cyanogenmod.org/w/Aries_Info

在頁面中可以找到Kernel後面的連結:

http://www.github.com/cyanogenmod/android_kernel_xiaomi_aries

單擊該連結進入github下載頁面,可以通過git clone下載,也可以直接下載zip壓縮版本。

2. 編譯核心原始碼

進入下載後的目錄,將MakeFile中的兩行修改為:

ARCH		?= arm
CROSS_COMPILE	?= arm-none-linux-gnueabi-

如果未安裝交叉編譯器請安裝交叉編譯器。

之後執行以下命令:

make cyanogen_aries_defconfig
make

編譯過程可能會遇到如下問題,給出瞭解決方式,但不知是否有潛在bug。

(1)報錯:

drivers/mmc/host/msm_sdcc.c: In function 'msmsdcc_probe': 
drivers/mmc/host/msm_sdcc.c:5516:19: warning: 'sup_voltages' may be used uninitialized in this function [-Wuninitialized]
解決方法:

在drivers/mmc/host/msm_sdcc.c檔案5517行後面(在使用sup_voltages之前)新增:

sup_voltages = devm_kzalloc(dev, sup_volt_len / sizeof(*sup_voltages) * sizeof(*sup_voltages), GFP_KERNEL);
(2)報錯:
drivers/mmc/host/msm_sdcc.c: In function 'msmsdcc_probe':
drivers/mmc/host/msm_sdcc.c:5556:24: warning: 'clk_table' may be used uninitialized in this function [-Wuninitialized]
解決方法:

在drivers/mmc/host/msm_sdcc.c檔案5517行後面(在使用clk_table之前)新增:

clk_table = devm_kzalloc(dev, clk_table_len / sizeof(*clk_table) * sizeof(*clk_table), GFP_KERNEL);
(3)報錯:
drivers/staging/prima/CORE/HDD/src/wlan_hdd_main.c: In function 'wlan_hdd_scan_abort':
drivers/staging/prima/CORE/HDD/src/wlan_hdd_main.c:7201:9: warning: 'status' may be used uninitialized in this function [-Wuninitialized]
解決方法:

將drivers/staging/prima/CORE/HDD/src/wlan_hdd_main.c檔案7201行(status定義所在行)修改為:

int status = VOS_STATUS_SUCCESS;