2013-07-04 23 views
5

Tôi đã viết chương trình Hello World rất cơ bản để biết về các phần. Sau khi sử dụng objdump Tôi đã nhận tất cả các phần. Tôi đang sử dụng ubuntu 12.04.Tháo gỡ các phần trong chương trình c

trong đầu ra tôi thấy nó như thế:

  1. Tháo lắp phần .init

  2. Tháo lắp phần .plt

  3. Tháo lắp phần .text

  4. __do_global_dtors_aux

  5. Tháo lắp phần .fini

Tôi muốn biết những phần là gì? họ lưu trữ dữ liệu gì? Đặc biệt .plt.fini. Giới thiệu về .init.text Tôi có thể đoán, nhưng còn những người khác thì sao?

+0

Tôi có thể biết làm thế nào bạn biên dịch tập tin này –

+0

đầu tiên 'gcc -o objectfile programname.c' sau đó' objdump objectfile'. – someone

Trả lời

3

Bạn nên google: here is the first result. Đó là một khởi đầu tốt để tìm hiểu thêm về định dạng ELF.

Giới thiệu .init.fini, it's here.

Here is a list of the ELF sections với mô tả ngắn gọn.

+0

liên kết rất tốt –

+0

'dtor' có nghĩa là destructor, và tôi đang sử dụng c, sau đó làm thế nào đến tôi nhận được' __do_global_dtors_aux'. Nó có phải là destructor hay cái gì khác? – someone

+0

Trình biên dịch của bạn là gì? – nouney

0

From this handy page:

Phần tiếp theo tôi muốn đề cập đến là phần .plt. Điều này chứa bảng nhảy được sử dụng khi chúng ta gọi các hàm trong thư viện được chia sẻ.

from this page:

.fini

Phần này chứa hướng dẫn thực thi góp phần vào mã chấm dứt quá trình. Đó là, khi một chương trình thoát bình thường, hệ thống sẽ sắp xếp để thực thi mã trong phần này.

0

bạn có thể thấy hướng dẫn ngắn gọn này hữu ích. Nó cũng chứa các liên kết đến các tài liệu liên quan.

"Các mối liên kết demystified, phần 1": http://www.rtos.be/?p=2166

Tôi hy vọng nó giúp.

Fernando

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