Những câu hỏi thường gặp về Linux
Tùy chọn -m486 của GCC, được dùng để biên dịch chương trình x486, chủ yếu tối ưu vài điềm. Chúng
làm cho chương trình lớn hơn một chút và nhanh hơn một tí trên máy 486. Chúng vẫn chạy trên 386,
mặc dù hiệu suất kém hơn.
Tuy nhiên, từ phiên bản 1.3.35, kernel dùng chỉ thỉ riêng của 486 hoặc Pentium nếu được cấu hình cho
486 hoặc Pentium, vì thế nên không thể chạy trên 386.
GCC có thể được cấu hình cho 385 hoặc 486: khác biệt duy nhất là cấu hình cho 386 dùng tùy chọn
-m386
làm mặc định còn 486 dùng -m486 làm mặc định. Trong cả hai trường hợp, những tùy chọn này
có thể bị ghi đè bằng cách sửa
/usr/lib/gcc-lib/i*-linux/
n.n.n
/specs
.
Một bản alpha cho GCC biết tối ưu cho 586 như thế nào, nhưng nó không đáng tin cậy lắm, đặc biệt với
các thiết lập tối ưu. Pentium GCC có ở ftp://tsx-11.mit.edu/pub/linux/ALPHA/pentium-gcc/.
GCC 486 nguyên thủy tạo mã tốt hơn cho Pentium bằng cách dùng -m386, or ít nhất cũng nhỏ hơn.
H:
Lệnh “
gcc -O6
” làm cái gì?
Đ:
Hiện thời thì cũng như -O2 (GCC 2.5) hoặc -O3 (GCC 2.6, 2.7). Bất kỳ số nào lớn hơn số này điều
làm như nhau. Tập tin
Makefiles
của các kernel mới dùng -O2, và bạn cũng nên làm như vậy.
H:
linux/*.h
và
asm/*.h
ở đâu?
Đ:
Các thư mục
/usr/include/linux/
và
/usr/include/asm/
thường là các liên kết trỏ tới thư
mục chứa kernel header, thường nằm tại
/usr/src/kernel*/
.
Nếu bạn không có mã nguồn kernel, hãy tải chúng về. Hãy tham khảo câu trả lời: (“Làm thế nào để
nâng cấp/biên dịch lại hạt nhân
Sau khi tải, dùng rm để xóa những tập tin cũ, và ln để tạo liên kết:
$ rm -rf /usr/include/linux /usr/include/asm
$ ln -sf /usr/src/linux/include/linux /usr/include/linux
$ ln -sf /usr/src/linux/include/asm-
<architecture> /usr/include/asm
Các tập tin assembly nằm trong các thư mục riêng biệc cho từng hệ máy, vì thế bạn cần liên kết
/usr/src/include/asm
tới
/usr/src/linux/include/asm-i386
trên máy PC, tới
/usr/src/linux/include/asm-sparc
trên máy Sun Sparc, tới
/usr/src/linux/include/asm-ppc
trên PPC, và tương tự thế.
Bạn cũng sẽ nhận ra cần “make config” như trong mã nguồn kernel mới, để tạo
linux/autoconf.h
.
H:
Phải làm gì với lỗi khi biên dịch hạt nhân?
Đ:
Xem câu hỏilinux/*.h và asm/*.h ở đâu?.
Hãy nhớ rằng khi bạn “patch” kernel, bạn phải dùng tùy chọn “
-p0
” hoặc “
-p1
”. Nếu không, có thể sẽ
patch sai. Xem tài liệu patch để biết chi tiết.
“
ld: unrecognized option ‘-qmagic’
” nghĩa là bạn cần có bộ liên kết mới hơn, từ
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/, trong tập tin
binutils-2.8.1.0.1.bin.tar.gz
.
35