Tôi đang làm theo ví dụ đầu tiên về Hello World LKM và bây giờ tôi cần biên dịch nó.
Theo cuốn sách, Makefile cần phải như thế này:
obj-m+=hello_world.o
tất cả các:
tạo các mô-đun -C /lib/modules/$(shell uname -r)/build/ M=$(pwd)
dọn dẹp:
làm sạch -C /lib/modules/$(shell uname -r)/build/ M=$(pwd)
Và sau đó bạn cần phải chạy chế tạo
(và nó nói rằng bạn không thể chạy thực hiện sudo
hoặc bạn sẽ biên dịch lại tất cả các tiêu đề nhân Linux).
Bằng cách chạy này, nó xuất ra:
tạo -C /lib/modules/5.10.63+/build/ M= modules
make[1]: Nhập thư mục '/usr/src/rpi-5.10.y'
/bin/sh: 1: không thể tạo bao gồm/được tạo/uapi/linux/.version.h.tmp: Quyền bị từ chối
CẬP NHẬT bao gồm/được tạo/uapi/linux/version.h
mv: không thể thống kê 'bao gồm/tạo/uapi/linux/.version.h.tmp': Không có tệp hoặc thư mục như vậy
make[1]: *** [Makefile:1277: include/generated/uapi/linux/version.h] Lỗi 1
make[1]: Rời khỏi thư mục '/usr/src/rpi-5.10.y'
thực hiện: *** [Tệp tạo tệp: 4: tất cả] Lỗi 2
Và nếu tôi chạy thực hiện sudo
hoặc thay đổi các lệnh Makefile bằng cách thực hiện sudo -C ...
nó không bao giờ kết thúc (> 2h và vẫn đang chờ).
tôi không thể chạy sudo apt cài đặt linux-headers-'uname -r'
(bỏ qua ', chúng là ` nhưng tôi không thể đặt nó ở đây) vì kernel là cái cuối cùng (5.10.63+), nhưng tôi đã làm theo tất cả các bước trong cuốn sách hướng dẫn cách biên dịch thủ công tất cả nhân Linux tiêu đề, vì vậy tôi nên có chúng.
Bất kỳ ý tưởng? Nếu bạn cần thêm một số thông tin, chỉ cần cho tôi biết tôi cần chạy lệnh nào và tôi sẽ đính kèm đầu ra.
Cảm ơn!