Cách tạo tệp .ko trong Linux


Câu trả lời:


9

Tạo một Makefilenhư thế này.

ifneq ($(KERNELRELEASE),)
obj-m   := mymodule.o
else
KDIR    := /lib/modules/$(shell uname -r)/build
PWD     := $(shell pwd)
all:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
install:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install
%:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) $@
endif

Giả sử nguồn của mô-đun của bạn mymodule.cđang hoạt động, việc chạy makesẽ tạo mymodule.ko.


Điều đó tốt ... Nhưng tôi muốn biết tùy chọn nào được cung cấp cụ thể để xây dựng tùy chọn đó là * .ko như -c cho * .o hoặc -fpic-shared cho * .so cho gcc ..
Renjith G

Tôi không nghĩ gcc có lựa chọn như vậy. Hoặc .ko chỉ là một tên khác của * .a / .so hoặc (có thể xảy ra hơn) nó được xử lý sau bởi một số tập lệnh.
Maciej Piechotka

2
@Renjith G: Chính xác cách thức .kotạo ra có thể thay đổi từ phát hành kernel sang phát hành kernel và cách duy nhất để đảm bảo bạn làm việc với kernel là sử dụng Makefiles của kernel.
ephemient

Sau đó, bạn có thể giải thích cho tôi ý nghĩa của từng câu trong tập tin trên không?
Renjith G

2

Câu trả lời ngắn gọn: bạn không thể. Tệp .ko không chỉ là phiên bản được biên dịch của nguồn trình điều khiển của bạn. Hệ thống xây dựng kernel bao gồm một số thông tin bổ sung chẳng hạn (phiên bản trình biên dịch, phụ thuộc mô-đun, ...).

Bạn có thể có thể đào qua hệ thống xây dựng kernel để tìm tất cả các hoạt động cần thiết, nhưng bạn không nên. Nó gần như chắc chắn sẽ phá vỡ với bản phát hành kernel tiếp theo, hoặc cái sau đó. Bạn nên sử dụng ephemient makefile được cung cấp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.