ฉันกำลังพยายามสร้างไดรเวอร์ linux เก่าในระบบของฉัน (Kubuntu 21.10) ด้วย ทำ -C ...
.
คนขับกำลังประกาศ โครงสร้างคงที่ timeval frame_timestamp;
ถ้าฉันพยายามสร้างมันด้วยสิ่งที่ชอบ
ทำ -C /lib/modules/`uname -r`/build M=`pwd` V=1 โมดูล
ฉันได้รับ ... มีประเภท âstruct timevalâ ที่ไม่สมบูรณ์
ข้อผิดพลาดและข้อผิดพลาดอื่น ๆ ที่เกี่ยวข้อง
ดังนั้นฉันเชื่อว่าฉันต้องรวม sys/time.h ด้วย #รวม <sys/time.h>
ลงในรหัส
แต่ในกรณีนี้ฉันได้รับ ข้อผิดพลาดร้ายแรง: sys/time.h: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
. และฉันไม่สามารถหาวิธีแก้ไขปัญหานี้ได้ (โค้ดมีบางส่วนอยู่แล้ว แต่ไม่มีจาก sys/ ทั้งหมดมาจาก linux/ และ media/)
ฉันลงเอยด้วยการติดตาม สร้างไฟล์
:
obj-m := mydriver.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(เชลล์ pwd)
ค่าเริ่มต้น:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) M=$(PWD) V=1 โมดูล
เดอะ เคดีอาร์
แก้ไขเป็น /lib/modules/5.13.0-21-generic/build
ซึ่งเชื่อมโยงกับ /usr/src/linux-headers-5.13.0-21-generic
. ไม่มี sys/time.h
.
ค้นหา sys/time.h
ผลตอบแทน:
/usr/include/i386-linux-gnu/sys/time.h
/usr/include/sys/time.h
/usr/include/x86_64-linux-gnu/sys/time.h
ซึ่งเป็นของ libc6-dev
และ libc6-dev-i386:
.
dpkg -l *5.13.0-21*
ให้:
ii linux-headers-5.13.0-21 5.13.0-21.21 ไฟล์ Header ทั้งหมดที่เกี่ยวข้องกับ Linux kernel เวอร์ชัน 5.13.0
ii linux-headers-5.13.0-21-generic 5.13.0-21.21 amd64 ส่วนหัวเคอร์เนล Linux สำหรับเวอร์ชัน 5.13.0 บน 64 บิต x86 SMP
ii linux-image-5.13.0-21-generic 5.13.0-21.21 amd64 อิมเมจเคอร์เนลที่ลงนามทั่วไป
un linux-image-unsigned-5.13.0-21-generic <неÑ> <неÑ> (опиÑание недоÑÑÑпно)
ii linux-modules-5.13.0-21-generic 5.13.0-21.21 amd64 Linux kernel โมดูลเพิ่มเติมสำหรับเวอร์ชัน 5.13.0 บน 64 บิต x86 >
ii linux-modules-extra-5.13.0-21-generic 5.13.0-21.21 amd64 โมดูลเพิ่มเติมของเคอร์เนล Linux สำหรับเวอร์ชัน 5.13.0 บน 64 บิต x86
ฉันพยายามฮาร์ดโค้ด -I /usr/include/x86_64-linux-gnu/
เข้าไปข้างใน ทำ -C
- สิ่งนี้ไม่มีผล
ฉันพยายามดาวน์โหลดวานิลลาเคอร์เนลจาก kernel.org ด้วย: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.13.tar.xz
และฮาร์ดโค้ดเป็น เคดีอาร์
- ที่ไม่ได้ช่วยและไม่มี sys/time.h
ทั้ง.
คำถามคือ จะบังคับให้กระบวนการสร้างโมดูลของฉันเห็นได้อย่างไร sys/time.h
?
โมดูล linux อนุญาตให้เชื่อมโยงกับ libc หรือไม่ หากไม่ใช่ส่วนหนึ่งของเคอร์เนล จะทำให้พร้อมใช้งานสำหรับโมดูล buildprocess ได้อย่างไร