對於一些比較特殊的外設,並不是所有的產品全部有該外設,公司有時採用單獨編譯ko的方法,然後通過啟動時的指令碼,載入ko,以方便對該模組的快速除錯。
這裡主要列出makefile的基本格式:
fneq ($(kernelrelease),)
obj-m := module.o
module-y += file1.o\
file2.o
else
pwd := $(shell pwd)
arch=arm
cross_compile=arm-none-linux-gnueabi-
# 交叉編譯器的路徑,由於已經配置成環境變數
#cross_compile=arm-eabi-
kerneldir ?= ../kernel-src
#指向核心的路徑
makeargs := arch=$(arch) cross_compile=$(cross_compile)
dbg_cflags="-g -ddebug -w"
extra_cflags="-w"
.phony : debug clean
default:
$(make) $(makeargs) extra_cflags=$(extra_cflags) -c $(pwd)/../$(kerneldir) m=$(pwd) lddincdir=$(pwd)/ modules
debug:
$(make) $(makeargs) extra_cflags=$(dbg_cflags)$(extra_cflags) -c $(pwd)/../$(kerneldir) m=$(pwd) lddincdir=$(pwd)/ modules
clean:
$(make) $(makeargs) -c $(pwd)/../$(kerneldir) m=$(pwd) lddincdir=$(pwd)/ clean
endif
靜態編譯與動態編譯的區別
靜態編譯與動態編譯的區別 動態編譯的可執行檔案需要附帶乙個的動態鏈結庫,在執行時,需要呼叫其對應動態鏈結庫中的命令。所以其優點一方面是縮小了執行檔案本身的體積,另一方面是加快了編譯速度,節省了系統資源。缺點一是哪怕是很簡單的程式,只用到了鏈結庫中的一兩條命令,也需要附帶乙個相對龐大的鏈結庫 二是如果...
busybox動態編譯靜態編譯的區別
busy box選擇靜態編譯的話,命令和工具集不需要動態載入lib裡面的庫,所以在製作根檔案系統的時候就不需要往裡面新增庫檔案,省了這一步雖然方便,但是這樣的話,你做的根檔案系統就不能執行動態鏈結的程式了,因為你的開發板裡面沒有庫啊,為了能夠執行動態鏈結的程式,你把arm linux gcc裡面的庫...
靜態編譯與動態編譯的區別
靜態編譯與動態編譯的區別 動態鏈結庫 動態 有 靜態 無 動態編譯 動態編譯的可執行檔案 需要附帶乙個的動態鏈結庫 在執行時,需要呼叫其對應動態鏈結庫中的命令。優點 一方面是縮小了執行檔案本身的體積 一方面是加快了編譯速度,節省了系統資源。缺點 二是如果其他計算機上沒有安裝對應的執行庫,則用動態編譯...