Đôi khi, một mô-đun bên ngoài sử dụng xuất khẩu ký tự từ một mô-đun bên ngoài . kbuild cần có kiến thức đầy đủ về tất cả các ký hiệu để tránh phát tán cảnh báo về các ký hiệu không xác định. Ba giải pháp tồn tại cho tình huống này.
LƯU Ý: Phương pháp có tệp kbuild cấp cao nhất được khuyến nghị nhưng có thể là không thực tế trong một số trường hợp nhất định.
Sử dụng tệp kbuild cấp cao nhất Nếu bạn có hai mô-đun, foo.ko và bar.ko, trong đó foo.ko cần ký hiệu từ bar.ko, bạn có thể sử dụng một tệp kbuild chung cấp cao nhất các mô-đun được biên soạn trong cùng một cấu trúc . Xem xét bố cục thư mục sau:
./foo/ <= contains foo.ko ./bar/ <= contains bar.ko
The top-level kbuild file would then look like:
#./Kbuild (or ./Makefile): obj-y := foo/ bar/
And executing
$ make -C $KDIR M=$PWD
will then do the expected and compile both modules with full
kiến thức về các biểu tượng từ một trong hai mô-đun.
Sử dụng tệp Mô-đun bổ sung khi mô-đun bên ngoài được tạo, tệp Mô-đun được tạo ra chứa tất cả các ký hiệu đã xuất không được xác định trong hạt nhân. Để truy cập vào các biểu tượng từ bar.ko, hãy sao chép tệp Module.symvers từ việc biên soạn bar.ko vào thư mục nơi foo.ko được tạo. Trong quá trình xây dựng mô-đun, kbuild sẽ đọc tệp Module.symvers trong thư mục của mô-đun bên ngoài và khi xây dựng xong, tệp Module.symvers mới được tạo có chứa tổng tất cả các ký hiệu được xác định và không phải là một phần của hạt nhân.
Sử dụng "làm cho" KBUILD_EXTRA_SYMBOLS biến Nếu đó là không thực tế để Module.symvers sao chép từ mô-đun khác, bạn có thể gán một không gian tách ra danh sách các tập tin để KBUILD_EXTRA_SYMBOLS trong xây dựng tập tin của bạn. Các tệp này sẽ được tải bởi modpost trong khi khởi tạo các bảng biểu tượng của nó.
Tuyệt vời! Tôi bỏ lỡ điều đó. Cảm ơn bạn Gossamer! – MirkoBanchi