日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Tip1:交叉編譯選項

編譯Linux,通常只需要運行make menuconfig配置要編譯的模塊,然后運行make。Linux默認是做本地編譯,也就是編譯位本機使用的內核。

在嵌入式開發中,經常需要交叉編譯,要做交叉編譯的話,需要在make命令后加上宏定義,如交叉編譯為arm目標:

make ARCH=arm CROSS_COMPILE=arm-linux-

登錄后復制

ARCH=arm:表示目標CPU為ARM架構

CROSS_COMPILE=arm-linux-

表示編譯過程使用的交叉編譯鏈為arm-linux

當然也可以直接修改Makefile中的ARCHCROSS_COMPILE宏定義,以此實現同樣的效果。但是不建議直接修改Makefile

Tip2:源碼與目標文件分離

Linux內核編譯過程會產生很多的文件,包括目標文件、臨時文件等等,默認情況下,編譯生成的文件會存放在內核源碼目錄

當你使用git status顯示自己對內核代碼的修改時也會把這些臨時文件顯示出來,而且提交還必須一個文件一個文件地指定,相當麻煩。

因此我們可以在父目錄創建一個存放編譯文件的目錄,如build-kernel,然后再make 命令后面加上宏定義:

make O=../build-kernel

登錄后復制

這樣在編譯Linux內核時,所有編譯產生的文件,都會放在build-kernel目錄,如果build-kernel目錄不存在,也會自動創建。這樣可以實現Linux內核源碼與編譯產生的文件分離。

Tip3:獲得編譯命令及選項

編譯linux時,默認不會顯示編譯的命令,如果你要獲得編譯命令及其選項,可以在make命令后面加上宏定義:

make V=1

登錄后復制

如果希望編譯系統告訴你為何某個目標文件需要重新編譯,則:

make V=2

登錄后復制

內核編譯腳本

最后分享我常用的內核編譯腳本mk.sh,給大家參考:

#!/bin/sh

export ARCH=arm
export PATH=~/toolchain/arm_glibc/host/bin:$PATH
export CROSS_COMPILE=arm-linux-gnu-

#make O=../bd defconfig
make O=../bd menuconfig -j32
make O=../bd dtbs

#反匯編
$(CROSS_COMPILE)objdump -d ../bd/vmlinux > ../image/vmlinux_dump.txt

#生成uImage
../ubd/tools/mkimage -A arm -T kernel -C none -O linux -a 0x80200000 -e 0x80200000 -n "debug kernel" -d ../bd/Image ../image/uImage

登錄后復制

其中,make O=../bd defconfig只有在第一次編譯內核的才使用,第一次編譯過后,將這句注釋,后面都通過make menuconfig修改內核配置。

objdump反匯編對大多數人來說可能用不上,一般在內核移植、啟動分析時比較有用,但由于工作需要,我通常都會把反匯編加上。

以上就是編譯Linux內核一定要知道的幾個小Tips的詳細內容,更多請關注www.92cms.cn其它相關文章!

分享到:
標簽:Linux Tips 內核 幾個 編譯
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定