2011-11-22 21 views
23

Chính xác những gì là .a (ví dụ: libcrypto.a) và chúng bao gồm những gì? Có phải các tệp .m hoặc .o hoặc .h hoặc .c không?Tệp .a (như libcrypto.a) là gì?

IOS SDK/Xcode hiểu chúng như thế nào? Và nếu chúng tôi bao gồm tệp .a trong dự án xcode của chúng tôi, chúng tôi có cần phải sao chép tệp nguồn tương ứng không?

+0

Xin lỗi vì điều đó, hãy làm quen với điều này, và dint biết nếu nó tồn tại, cảm ơn bạn con trỏ :) – chetan

Trả lời

39

.a tệp là static library tệp. Chúng "chứa" một hoặc nhiều tệp .o, tức là mã được biên dịch. Để sử dụng chúng, bạn (thường) cần các tệp tiêu đề (.h) tương ứng với mã được biên dịch, nhưng bạn không cần mã nguồn (.c, .m).

Các .a tập tin được sản xuất với các tiện ích ar, và các mối liên kết (ld) mà là (thường) gọi bởi trình biên dịch của bạn biết định dạng của họ và làm thế nào để trích xuất các phần có liên quan của mã từ kho lưu trữ và vào thực thi của bạn.

+0

Cảm ơn bạn đã trả lời nhanh chóng Mat, Tôi đã tạo một tệp .a tĩnh cho một dự án mẫu và sao chép tiêu đề và tệp .a trong một dự án khác. Nhưng khi tôi cố gắng truy cập các phương thức trong chế độ gỡ lỗi, điều khiển trỏ đến các phương thức của tệp .m tương ứng mà tôi đã tạo tệp .a. tại sao nó mở tệp .m, nếu tôi chỉ thêm tệp .h và .a của nó. – chetan

+0

Thông tin gỡ lỗi chứa tên tệp và số dòng. Thông tin này được bao gồm trong các tệp '.o' để các trình gỡ rối có thể cho bạn biết mã nguồn nào đã tạo ra các hướng dẫn mà bạn đang xem. Nếu không có điều đó, bạn sẽ chỉ thấy lắp ráp mà không phải là hữu ích. IDE của bạn có thể ánh xạ thông tin gỡ lỗi đó tới các tệp mã nguồn thực tế nếu nó có đủ thông tin. – Mat

+0

Cảm ơn, Vì vậy, bạn nói rằng, chỉ trong chế độ gỡ lỗi, các điểm IDE vào tệp nguồn và không phải trong thời gian chạy vì tệp .o? Nếu tôi xóa dự án khỏi vị trí của nó, ở chế độ gỡ lỗi, nó sẽ báo lỗi "xcode không thể định vị tệp nguồn" và ngắt ở đó. Nhưng khi tôi chạy trong thời gian chạy, không có lỗi – chetan

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