Tôi biết rằng các đối tượng được chia sẻ trong Linux sử dụng "số", cụ thể là các phiên bản khác nhau của đối tượng được chia sẻ được cung cấp các tiện ích mở rộng khác nhau, ví dụ:
example.so.1
example.so.2
Tôi hiểu ý tưởng là có hai tệp riêng biệt sao cho hai phiên bản của thư viện có thể tồn tại trên một hệ thống (trái ngược với "DLL Hell" trên Windows). Tôi muốn biết làm thế nào điều này hoạt động trong thực tế? Thông thường, tôi thấy rằng example.so
trên thực tế đó là một liên kết tượng trưng đến example.so.2
đâu .2
là phiên bản mới nhất. Làm thế nào để một ứng dụng phụ thuộc vào một phiên bản cũ hơn example.so
xác định chính xác nó? Có quy định nào về những con số người ta phải sử dụng không? Hay đây chỉ đơn giản là quy ước? Có phải là trường hợp, không giống như trong Windows khi các nhị phân phần mềm được chuyển giữa các hệ thống, nếu một hệ thống có phiên bản mới hơn của một đối tượng dùng chung, nó sẽ tự động được liên kết với phiên bản cũ hơn khi biên dịch từ nguồn?
Tôi nghi ngờ điều này có liên quan đến ldconfig
nhưng tôi không biết làm thế nào.