2012-04-16 24 views
8

Làm cách nào để thêm đường dẫn bao gồm cho tệp makefile mô-đun hạt nhân? Tôi muốn bao gồm "test_kernel.h" trong test_module.c. các "test_kernel.h" nằm trong thư mục khác "inc" tôi đã cố gắng trong các giải pháp sau đây trong Makefile của tôi, nhưng nó không hoạt động:Làm cách nào để thêm đường dẫn bao gồm cho makefile mô-đun hạt nhân

obj-m += test_module.o 

test_module: 
    $(MAKE) -C "$(LINUX_DIR)" -Iinc $(MAKE_OPTS) modules 

Trả lời

0

-I là một lá cờ GCC, không phải là một Make cờ. Bạn cần chuyển một biến xuống quy trình "phụ" của bạn; có lẽ một cái gì đó như thế này:

$(MAKE) -C "$(LINUX_DIR)" CPPFLAGS="-Iinc" $(MAKE_OPTS) modules 

nơi CPPFLAGS là một Make biến tiêu chuẩn được sử dụng trong các quy tắc ngầm. Thay vào đó, hãy sử dụng biến của riêng bạn và đảm bảo biến được sử dụng phù hợp trong tiểu trình.

Hướng dẫn sử dụng cung cấp thêm chi tiết về các biến liên lạc giữa Tạo các cá thể: http://www.gnu.org/software/make/manual/make.html#Variables_002fRecursion.


1. Trên thực tế, nó cũng là Gắn cờ, nhưng đối với một cái gì đó hoàn toàn không liên quan.

+0

Tôi đã thay thế -Iinc bằng CFLAGS = inc và nó không hoạt động quá – MOHAMED

+0

@MohamedKALLEL: Vâng, tôi hiểu sai. Tôi đã cập nhật câu trả lời của mình. –

+0

ngay cả với CPPFLAGS = "- Iinc" không hoạt động – MOHAMED

0

bạn có chắc chắn đã chỉ định chính xác bao gồm trong tệp của mình không?

ví dụ .:

#include "inc/something.h" 

thay vì

#include <inc/something.h> 
12

Bạn nên tận dụng EXTRA_CFLAGS trong Makefile của bạn. Hãy thử điều gì đó trên các dòng sau:

obj-m += test_module.o 
EXTRA_CFLAGS=-I$(PWD)/inc 

test_module: 
    $(MAKE) -C "$(LINUX_DIR)" $(MAKE_OPTS) modules 

Xem phần 3.7 Compilation Flags phần here.
Hy vọng điều này sẽ hữu ích!

+0

Điều này rất hữu ích. Đọc tài liệu mới hơn, có vẻ như EXTRA_CFLAGS không còn được dùng nữa. Bạn có thể sử dụng ccflags-y = -I $ (PWD)/inc thay vì EXTRA_CFLAGS. Kiểm tra mục 3.7 [tại đây] (https://www.kernel.org/doc/Documentation/kbuild/makefiles.txt). –

Các vấn đề liên quan