Phần makefile để biên dịch driver sao lại biên dịch theo cách `make -c `?

Trước giờ mình thấy makefile để biên dịch đều dùng gcc hay g++ chứ chưa thấy dùng make -c bao giờ hết. Ai biết giải thích cho mình với. thanks.

-c nghĩa là nhảy đến thư mục /lib/modules/$(shell uname -r)/build và gõ lệnh make M=… modules.
Bạn nên gõ man make để xem chi tiết về option -c.

1 Like

Em cảm ơn. Anh có thể giải thích cho em phần obj-m += hello_driver.o được không ạ ? E không hiểu phần -m đó là sao, cón phép gán thì e hiểu.

hello bạn

obj-m là một biến ở trong hệ thống Makefile của linux kernel, khi bạn gán thêm giá trị cho biến này là hello_driver.o tương đương với bạn thông báo rằng để biên dịch được kernel module hello_driver.ko thì cần file hello_driver.o.
Kernel build system sẽ tìm ra file hello_driver.c của bạn và build ra file hello_driver.o bằng gcc sau đó build ra hello_driver.ko từ hello_driver.o
obj-m ở đây nghĩa là module object.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?