2010-10-05 25 views
10

Trình liên kết biết biểu tượng nào cần được giải quyết khi chạy? Đặc biệt là tôi quan tâm những thông tin được chia sẻ các tập tin đối tượng mang theo mà liên kết hướng dẫn để giải quyết các biểu tượng trong thời gian chạy. Độ phân giải biểu tượng động hoạt động như thế nào trong thời gian chạy, tức là những gì thực thi sẽ làm để tìm biểu tượng và trong trường hợp nhiều biểu tượng có cùng tên được xác định sẽ được tìm thấy?Trình liên kết biết biểu tượng nào cần được giải quyết trong thời gian chạy?

Điều gì xảy ra nếu tệp chỉ được liên kết tĩnh, nhưng sau đó tệp được liên kết động tại thời gian chạy như một phần của thư viện được chia sẻ? Biểu tượng nào sẽ được sử dụng bởi tệp thực thi? Nói cách khác, có thể ghi đè lên các ký hiệu trong một tệp thực thi bằng cách liên kết các biểu tượng đó vào một thư viện được chia sẻ không?

Nền tảng được đề cập là SUN OS.

+0

Mọi thời gian chạy đều khác nhau. Bạn phải cụ thể hơn về nền tảng. –

Trả lời

1

Kiểm tra bài viết này từ Linux Journal. Để biết thêm thông tin - có lẽ đặc biệt liên quan đến Windows, AIX, OSx, v.v. - Tôi muốn giới thiệu bài viết Wikipedia trên Linker (computing) và các tham chiếu trong đó.

2

Hãy thử liên kết dưới đây. Tôi hy vọng nó trả lời câu hỏi của bạn

http://www.linuxjournal.com/article/6463

+0

: O) Đánh tôi với nó. Tôi đã tham chiếu cùng một bài viết trong câu trả lời của tôi. Lên bầu cho tốc độ. –

+0

Tôi thực sự sử dụng bài viết này làm ví dụ cho những người bắt đầu lập trình C++ và khá hiệu quả. – Vaibhav

+0

Điều gì sẽ xảy ra nếu tệp được liên kết ** chỉ ** tĩnh, nhưng sau đó nó được liên kết động tại thời gian chạy như là một phần của một thư viện được chia sẻ? Biểu tượng nào sẽ được sử dụng bởi tệp thực thi? Nói cách khác, có thể ghi đè lên các ký hiệu trong một tệp thực thi bằng cách liên kết các biểu tượng đó vào một thư viện được chia sẻ không? – Leonid

0

Nếu tệp được liên kết tĩnh thì không có độ phân giải thời gian chạy để nói. Nếu một đối tượng được chia sẻ liên kết đến cùng một thư viện đó là động hoặc tĩnh, phiên bản được liên kết đến thư viện sẽ chỉ thực thi mã được thực thi trong thư viện. Điều này có thể gây ra sự cố nếu bạn liên kết với hai phiên bản khác nhau của cùng một thư viện không tương thích và chuyển dữ liệu qua lại.

Các vấn đề liên quan