Về cơ bản, loại lỗi này xuất phát từ trình liên kết (linker) trong giai đoạn biên dịch. Hành vi mặc định của trình liên kết là lấy mã từ các thư viện lưu trữ (archive libraries) khi chương trình hiện tại cần đến nó.
Để hoạt động đúng, các thư viện phải có mặt theo thứ tự. Chúng ta có thể nói rằng nó phải có dạng "người gọi (caller) trước người được gọi (callees)". Vấn đề này có thể giải quyết bằng cách chọn hành vi không mặc định sử dụng các cờ (flags), nhưng quá trình liên kết có thể mất thời gian dài hơn. Ngoài ra, có thể giải quyết bằng cách sắp xếp đúng thứ tự thư viện. Loaders và tsort có thể giúp sắp xếp lại và sửa chính thứ tự này.