Tôi đang cố gắng biên dịch một nhị phân của một dự án mã nguồn mở để người dùng của chúng ta không phải tự biên dịch nó.Tạo một nhị phân chung trong linux cho tất cả các máy x86
Tôi nhận thấy rằng một số tệp nhị phân được tạo trên một máy ubuntu 32 bit "A" không hoạt động trên máy 32 bit "B", có lỗi liên quan đến việc thiếu tệp .so đang được báo cáo.
Tuy nhiên, nếu tôi biên dịch từ đầu trên máy "B", thì tất cả các lỗi đều biến mất.
Có thể có bất kỳ lý do gì để biên dịch mã trên máy đích làm cho các lỗi này biến mất không? Tôi chỉ chạy "./configure" và "make" - không phải "make-install", Vì vậy, nó không giống như tôi đã tạo ra những tệp này .so có sẵn trên toàn cầu.
Có thể trình biên dịch phát hiện có các tệp .so bị thiếu trong thư viện hệ thống và trong trường hợp này liên kết một thư viện tĩnh vào tệp thực thi?
Ubuntu biên dịch các gói của nó sao cho gói i386 chạy trên tất cả các máy x86?
Đúng vậy, nhưng đừng đi quá xa. Biên dịch nhị phân trên RHEL 4 sẽ không có khả năng hoạt động trên bất kỳ bản phân phối hiện đại nào. Ít nhất libc là yếu tố quyết định chính, nó thường bị khóa vào một phiên bản nhỏ cụ thể. – Keith
PS. Đây cũng là lý do tại sao một số ứng dụng thương mại xuất xưởng với toàn bộ các thư viện chỉ cho chính nó và sử dụng LD_LIBRARY_PATH để đảm bảo chúng được sử dụng thay vì các ứng dụng hệ thống. Một tùy chọn khác là liên kết tĩnh. Đối với các công cụ nhỏ hoạt động tốt. – Keith