說明
由於工作原因要對android源碼進行編譯,用於修改底層驅動,對系統進行定制。但是編譯過程中要使用特定ubuntu版本和gcc版本,所以會比較麻煩。當時第一反映是安裝VMware虛擬機,裝一個指定版本然后將源碼拷貝進去再編譯,該方法是可行的。后來才發現很麻煩,虛擬機很占用空間,於是決定使用docker試試,實驗了一番,還真可以,方便占用存儲小,啟動起來快。
環境
主機:Ubuntu 16.04.2 LTS 64位 16G內存 500G硬盤 16個內核
docker版本: 17.03.0-ce
docke鏡像:ubuntu12.04 64位
同步鏡像
sudo docker pull registry.cn-shenzhen.aliyuncs.com/qusir/ubuntu12.04_msm8909:0.1
以上鏡像我已經定制好了的版本ubuntu12.04 64位,安裝好了依賴項和gcc,可以直接使用msm8909高通平台編譯。
修改后保存鏡像
docker提交鏡像
先查看運行鏡像的ID,不要將鏡像停止運行,然后用以下命令
速凍docker commit 61412230ae46 registry.cn-hangzhou.aliyuncs.com/qusir/liang
添加鏡像
sudo docker tag 70838701e83a registry.cn-hangzhou.aliyuncs.com/qusir/liang:0.1
推送鏡像
sudo docker push registry.cn-hangzhou.aliyuncs.com/qusir/liang:0.1
編譯源碼
啟動鏡像,映射目錄
docker run -it --rm -v /home/liang/data:/data registry.cn-shenzhen.aliyuncs.com/qusir/ubuntu12.04_msm8909 bash
將主機上的/home/liang/data
的目錄映射到docke的/data
目錄下
編譯源碼
初始化環境變量
source ./build/envsetup.sh
選擇編譯選項
lunch
選擇
34. msm8909-userdebug
開始編譯
make -j8
關閉鏡像
Ctrl+D退出鏡像