Tôi có một dự án sản xuất một thư viện được chia sẻ được liên kết với một thư viện khác, cũng được chia sẻ, thư viện.Các thay đổi được giới thiệu trong gcc 4.5 liên quan đến việc liên kết?
Khi tôi biên dịch và liên kết nó với gcc 4.4, mọi thứ hoạt động:
- không cần báo trước thời gian biên dịch hoặc sai sót,
- không có thời gian liên kết cảnh báo hoặc lỗi và
ldd libmyproject.so
báo cáo một cách chính xác phụ thuộc với thư viện được chia sẻ khác.
Khi tôi biên dịch và liên kết nó với gcc 4.5, mặt khác (với những lá cờ chính xác giống nhau), tôi có các triệu chứng sau đây:
- không cần báo trước thời gian biên dịch hoặc sai sót,
- không có cảnh báo hoặc lỗi thời gian liên kết nhưng
- thư viện không được liên kết chính xác với lib được chia sẻ khác: bản kê này tự chạy khi bạn chạy
ldd
và không thấy kết nối. nó hoạt động với gcc 4.4, sự cố es tại thời gian chạy với gcc 4.5 với lỗi "không tìm thấy biểu tượng" (tất nhiên là từ lib khác).
Tôi nhìn vào số release notes và trực giác của tôi là nó có liên quan đến tối ưu hóa thời gian liên kết mới, nhưng tôi không thể hiểu chúng đầy đủ chi tiết.
Có ai gặp phải tình huống tương tự và/hoặc có lời khuyên nào để cung cấp không?
(Lưu ý rằng kết quả với 4,6 có ngoại hình giống với 4.5).
Cờ liên kết của bạn là gì? Bạn có thể tái tạo các vấn đề với một chương trình tối thiểu (main.c, lib1.c, lib2.c, một chức năng một dòng trong mỗi)? –
Thật không may cho tôi, tôi không thể tái tạo nó với một chương trình tối thiểu. Không có cờ liên kết ngoại trừ các -L và -l mong đợi cần thiết để tìm thư viện khác. Tôi cũng nên lưu ý rằng tôi đã không viết thư viện khác và không biết làm thế nào nó được biên dịch (nhưng tôi có thể thấy tất cả các ký hiệu như mong đợi bằng cách sử dụng 'nm'). – Philippe
Âm thanh như một lỗi gcc với tôi ... – lvella