Tôi đã biên dịch tĩnh và liên kết một chương trình trong một máy Linux cập nhật và chạy nó trong một Linux khác 9 tuổi. Nó đã cho tôi một lỗi "FATAL: kernel quá cũ" và bỏ thuốc lá. Cụ thể, cái mới là Fedora 18 (gcc 4.7.2, glibc 2.16, kernel 3.7.2) và cái cũ là RHEL4.8 (glibc 2.3.4, kernel 2.6.9). Kể từ khi nó liên kết tĩnh, phiên bản glibc không quan trọng. Tôi đoán vấn đề ở đây là chương trình gọi các cuộc gọi hệ thống không có trong kernel cũ.Chương trình biên dịch cho hạt nhân cũ
Nếu phát triển trên hệ thống cũ không phải là một lựa chọn, làm thế nào tôi có thể xây dựng chương trình trong hệ thống mới và chạy trong cũ hơn (hoặc thậm chí tốt hơn, cả hai)? Tôi đã tìm kiếm một cách để chạy gcc trong một chế độ tương thích, mà chỉ gọi các cuộc gọi hệ thống cũ. Chưa có may mắn.
Nhận phiên bản cũ của glibc và liên kết với nó. Glibc mới sẽ không chạy trên hạt nhân cũ. –