Những câu hỏi thường gặp về Linux
H:
Làm thế nào tạo thư viện dùng chung?
Đ:
Với ELF,
$ gcc -fPIC -c *.c
$ gcc -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0 *.o
Với a.out, lấy
tools-
n.nn
.tar.gz
từ
tsx-11.mit.edu/pub/linux/packages/GCC/src/
. Nó có
tài liệu đi kèm, sẽ cho bạn biết cần làm gì. Chú ý rằng thư viện dùng chung a.out rất phức tạp, rắc rối.
Hãy xem xét nâng cấp thư viện của bạn lên ELF. Xem ELF HOWTO, tại
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/.
H:
Tại sao chương trình của tôi quá lớn?
Đ:
Với trình biên dịch ELF (“ELF là gì? glibc là gì?”), nguyên nhân thường nhất là thiếu liên kết thư
viện .so với mỗi thư viện bạn dùng. Nên có một liên kết như
libc.so
với mỗi thư viện như
libc.so.5.2.18
.
Với trình biên dịch a.out nguyên nhân thường nhất là tùy chọn liên kết -g. Tùy chọn này tạo ra một
chương trình được liên kết tĩnh, chứa mọi thư viện nó cần thay vì liên kết với các thư viện đó.
Những tùy chọn khác đáng quan tâm là -O và -O2, cho phép tối ưu (xem tài liệu GCC), và -s (hoặc lệnh
strip
) để loại bỏ những thông tin symbol ra khỏi chương trình (và cũng có nghĩa là hoàn toàn không thể
debug).
Bạn có thể sẽ muốn dùng tùy chọn -N trên nhưng chương trình rất nhỏ (nhỏ hơn 8K với -N), nhưng bạn
không nên làm thế trừ khi bạn hiểu tác động về hiệu suất của tùy chọn này, và hoàn toàn không nên làm
với daemon.
H:
Linux có hỗ trợ tuyến đoạn (thread) và tiến trình nhẹ cân (lightweight process) không?
Đ:
Cũng như mô hình đa tiến trình Unix, bao gồm đến các tiến trình nhẹ cân, là một phần của Linux
kernel chuẩn, có vài phiên bản tiến trình hoặc thread nhẹ cân. Các kernel gần đây dùng mô hình thread
là kthreads. Ngoài ra, cũng có thể dùng những gói phần mềm sau.
•
GNU glibc2 cho Linux có tùy chọn hỗ trợ thread: ftp://ftp.gnu.org/pub/gnu/
•
Trong
sipb.mit.edu:/pub/pthread/
hoặc
ftp.ibp.fr:/pub/unix/threads/pthreads
. Tài
liệu không nằm trong gói này, nhưng có tại http://www.mit.edu:8001/people/proven/home_page.html.
Các phiên bản libc mới hơn chứa mã nguồn pthreads. Trình biên dịch GNU Ada trên
ftp://metalab.unc.edu/pub/Linux/devel/lang/ada/gnat-3.01-linux+elf.tar.gz chứa chương trình được tạo
từ mã nguồn đó.
•
QuickThreads ở ftp://ftp.cs.washington.edu:/pub/qt-001.tar.Z. Thông tin chi tiết nằm trong các báo
cáo kỹ thuật, nằm cùng địa chỉ,
/tr/1993/05/UW-CSE-93-05-06.PS.Z
.
•
lwp ở gummo.doc.ic.ac.uk/rex/ (gummo.doc.ic.ac.uk/rex) , một phiên bản rất nhỏ.
•
Một phiên bản của Ada ở ftp://ftp.cs.fsu.edu:/pub/PART/. Có nhiều tài liệu PostScript mà bạn có thể
học được nhiều thông tin bổ ích về thread. Không thể sử dụng trực tiếp trong Linux.
Vui lòng liên lạc tác giả các gói phần mềm trên để biết chi tiết.
36