2012-10-25 53 views
8

Tôi có một số vấn đề liên kết.tùy chọn liên kết gcc để xem tại sao một số tệp đối tượng được liên kết thành nhị phân

Để điều tra sự cố, tôi thêm -t cờ liên kết (gcc -Wl, -t) để in thư viện nào được sử dụng và những đối tượng nào từ thư viện tĩnh được sử dụng.

Có một thư viện tĩnh trong một số cấu hình một tập hợp các tệp đối tượng được sử dụng và trong tập hợp khác.

Có cách nào (có thể là ld cờ) để xem tại sao đối tượng cụ thể (biểu tượng không xác định trước đó được xác định trong tệp đối tượng) được liên kết thành nhị phân và khác từ cùng một thư viện tĩnh không?

Trả lời

4

Cờ tôi đang tìm kiếm là -M, in bản đồ liên kết đến đầu ra tiêu chuẩn.

Từ ld (1):

-M 
    --print-map 
     Print a link map to the standard output. A link map provides information about the link, including the following: 
      · Where object files are mapped into memory. 
      · How common symbols are allocated. 
      · All archive members included in the link, with a mention of the symbol which caused the archive member to be brought in. 
      · The values assigned to symbols. 

mục thứ hai trong danh sách là những gì tôi đang tìm kiếm.

1

Vì bạn đã thêm tiền thưởng hơn một tháng sau lần chỉnh sửa cuối cùng của bạn cho câu hỏi và câu trả lời, tôi giả định rằng bạn không thích câu trả lời của riêng bạn.

Theo tôi được biết, bạn đang cố gắng để tìm ra những đối tượng (A) đang gây ra một số đối tượng khác (B) để được liên kết trong.

Nếu bạn làm biên dịch/link mà không B hiện tại (tức là không có trên dòng lệnh), sau đó bạn sẽ nhận được thông báo lỗi cho bạn biết lý do tại sao nó cần tham khảo A.

Nếu B nằm trong thư viện, bạn có thể cần tạo một phiên bản đặc biệt của thư viện đó không bao gồm B.

+0

Thực ra tôi thích câu trả lời của riêng mình. Tôi đã bị ràng buộc bởi sai lầm và không thể không trở lại nó :) – dimba

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