2011-06-28 39 views
6

Gần đây tôi đã dành nhiều giờ để sửa một tập lệnh ld có vấn đề. Khi tôi đã vẽ (trên giấy) tất cả các phần khác nhau, tôi có thể tìm ra vấn đề.Trình tạo tập lệnh liên kết

Vì vậy, tôi bắt đầu tìm kiếm một số loại trình tạo tập lệnh LD, nhưng không thể tìm thấy bất kỳ tập lệnh nào! Có ai biết nếu một công cụ như vậy tồn tại? Có thể nhập/xuất tập lệnh ld hoặc tệp bản đồ/tệp elf và hiển thị các đối tượng/phần khác nhau và địa chỉ?

Tôi biết có một số IDE ở đó, nơi bạn không cần phải lo lắng về LD-script nhưng tôi đang sử dụng nhật thực và thậm chí nó không cung cấp cú pháp tô sáng!

+0

Có một công cụ như vậy trong bộ công cụ Green Hills MULTI, mà là độc quyền. Tôi đã không nhìn thấy một công cụ như vậy ở nơi khác. Điều đó nói rằng, tôi chưa bao giờ thấy nó hữu ích để hiển thị hoặc chỉnh sửa. Dumping các phần ranh giới từ thực thi với readelf và cán đồ thị của riêng bạn có lẽ sẽ là một công việc nhanh chóng, mặc dù. Lưu ý của bạn về 'một số IDE' làm cho tôi hỏi chính xác bạn đang làm gì với tập lệnh liên kết, mặc dù ... – djs

+0

Vâng, những gì bạn đề xuất ở trên là những gì tôi thực sự làm. Những gì tôi muốn làm là làm cho công việc này tự động (một số loại GUI). Kịch bản linker của tôi khá phức tạp, với nhiều phần khác nhau trong flash/internal & external ram nên nó là một công việc tốn thời gian để kiểm tra sự kỳ diệu của các script liên kết một cách thủ công. – theAlse

Trả lời

2

Theo hiểu biết của tôi, không có công cụ không độc quyền cho mục đích này.

+0

Tôi sẽ chấp nhận điều này như một câu trả lời vì tôi chưa thấy một công cụ để làm điều này! – theAlse

3

Tôi không biết bất kỳ trình soạn thảo WYSIWYG nào cho các tập lệnh LD nhưng tôi có thể giúp bạn gỡ rối đồ họa các loại vấn đề này.

Tôi cho rằng đây là vấn đề thời gian chạy và không phải là vấn đề thời gian biên dịch. Nếu đó là trường hợp thì bạn có thể sử dụng đầu ra bản đồ từ trình liên kết để có ý tưởng về những gì đang diễn ra.

gcc -Wl,-Map=main.map main.c 

Tệp bản đồ sau đó có thể được phân tích bằng grep hoặc bạn có thể sử dụng graphical viewer cho tệp để gỡ lỗi các phần và ký hiệu.

Bạn cũng có thể sử dụng nm để có được kết quả tương tự từ một thực thi liên quan:

nm -S --size-sort a.out 
Các vấn đề liên quan