編譯 ubuntu/omnibook 子系統時連結器找不到 sections.lds,原因是 Makefile 使用 $(src) 變數在外部建構樹中解析錯誤。修正路徑變數即可。
ld: cannot find /ubuntu/omnibook/sections.lds: No such file or directory
/usr/src/linux-source-2.6.32/ubuntu/omnibook/Makefile
ifeq ($(KERNELRELEASE),)
# Support for direct Makefile invocation
PWD=$(shell pwd)
# 原始 (錯誤)
#EXTRA_LDFLAGS += $(src)/sections.lds
EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds
改為兩種任一:
// 方法 A:啟用 PWD 定義
#EXTRA_LDFLAGS += $(src)/sections.lds
PWD = $(shell pwd)
EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds
// 方法 B:回退使用 $(src) (若在核心樹內建構)
EXTRA_LDFLAGS += $(src)/sections.lds
#EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds
$(src) 為核心建構系統內部變數,僅在核心樹內 make 時有效make -C /lib/modules/$(uname -r)/build M=$PWD) 時 $(src) 解析為空/錯誤路徑$(PWD) 或 $(shell pwd) 取得當前絕對路徑,確保連結器找到 sections.lds
make clean && make
連結通過,模組 .ko 產出成功。