Không chắc chắn những gì đã xảy ra ở đây. Tôi đang cố nâng cấp nhân Linux của mình từ 4.9.x lên 4.14.x và điều dưới đây đã xảy ra:
In file included from arch/x86/decode.c:26:0:
arch/x86/../../elf.h:22:18: fatal error: gelf.h: No such file or directory
#include <gelf.h>
^
compilation terminated.
mv: cannot stat ‘/usr/src/linux-4.14.51/tools/objtool/arch/x86/.decode.o.tmp’: No such file or directory
make[4]: *** [/usr/src/linux-4.14.51/tools/objtool/arch/x86/decode.o] Error 1
make[3]: *** [arch/x86] Error 2
make[2]: *** [/usr/src/linux-4.14.51/tools/objtool/objtool-in.o] Error 2
make[1]: *** [objtool] Error 2
make: *** [tools/objtool] Error 2
Bất kỳ ý tưởng những gì đã xảy ra ở đây (ngoài những điều hiển nhiên)? Có nên " gelf.h
" đã có trên máy tính của tôi? Hoặc trong tarball hạt nhân?
Tôi đã tải xuống vanilla 4.14.51 từ kernel.org - Tôi đã biên dịch hạt nhân vanilla (chưa sửa đổi) của riêng tôi thành công, lặp đi lặp lại, trong 14 năm nay, nhưng điều này là mới.
PC của tôi là máy tính xách tay Dell có Core2 i5 (64-bit) với Slackware 14.1 - Tôi đã nâng cấp stock 3.17.x với 4.4.x vài năm trước và gần đây là 4.9.x (hiện là 4.9.109).
Tôi làm có libelf cài đặt:
me@mylaptop:~$ locate gelf.h
/usr/include/libelf/gelf.h
me@mylaptop:~$ ls /var/log/packages/*elf*
/var/log/packages/libelf-0.8.13-x86_64-2
ĐỊA CHỈ
Khi thử 4.14.55 tối qua, tôi đã lưu ý rằng thư mục trong đó tập lệnh xây dựng kernel dự kiến sẽ thấy "gelf.h" nằm trong cây nguồn kernel, không phải là thông thường /usr/include
.
Nói như vậy, các thư mục tương ứng trong cây (chạy) nguồn 4.9.x của tôi không không có bất kỳ .o
hay .ko
tập tin. Rõ ràng có một mục cấu hình được kích hoạt trong 4.14.x mà tôi không kích hoạt trong 4.9.x.
Tôi đã thử cấu hình 4.14.x càng gần với 4.9.x hoạt động của tôi càng tốt; Tôi biết một số tùy chọn mới, nhưng nhìn chung tôi cố gắng giữ cấu hình giống nhau giữa các phiên bản kernel trung gian.
Điều đó đang được nói, tôi không biết tùy chọn cấu hình nào sẽ muốn xem các tệp tiêu đề trong linux-4.14.*/tools/objtool/arch/x86/
... Có ý tưởng nào không?
stat $(locate gelf.h)
cung cấp một tệp thông thường có kích thước 5103 byte. cat
ing tập tin đó cho thấy những gì có vẻ là một loạt mã tiền xử lý C. Copyright (C) 2000 - 2006 Michael Riepe