2012-08-15 35 views
7

Sau khi nâng cấp từ Xcode 4.3 để Xcode 4.4, tôi bắt đầu nhận được lỗi sau vào việc xây dựng ứng dụng iPhone của tôi:Linker lỗi trong Xcode 4.4

ld: section __objc_const (address=0x0010C720, size=7265990088) would make the output executable exceed available address range for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Địa chỉ bộ nhớ và số không có ý nghĩa gì với tôi , nhưng chúng vẫn nhất quán trong sạch và xây dựng lại. Nó không phải là rõ ràng với tôi làm thế nào để tìm thấy những gì họ có thể được tham khảo.

Mã đã thực hiện và vẫn biên dịch trong XCode 4.3.

Có ai có ý tưởng nào về cách tôi có thể theo dõi nguyên nhân gây ra lỗi này không?

+0

có thể là bạn không được liên kết với khung công tác bạn đang sử dụng hoặc bạn đã liên kết với điều sai. Nếu trước đây, hãy kiểm tra và liên kết nó trong cài đặt xây dựng. Nếu sau này, loại bỏ các mối liên kết sai và hy vọng XCode sẽ liên kết lại với đúng. – aforaudrey

+0

Bạn có dữ liệu tĩnh hoặc tĩnh được khởi tạo lớn trong chương trình của mình không? –

+0

@MartinR Có, lớn hơn tôi đã thấy trong một chương trình điển hình (tôi không viết nhiều mã) nhưng không có gì trên thứ tự 7 tỷ hoặc thậm chí một phần triệu của điều đó. –

Trả lời

1

Bạn có thể thấy các kích thước của tất cả các ký tự (bao gồm cả các biến toàn cục) trong một liên kết Map tập:

  • Trong Cài đặt xây dựng cho mục tiêu của bạn, hãy vào phần "Liên kết" và thiết lập "Viết Liên kết tệp Bản đồ "với" Có ".
  • Xây dựng chương trình. Trình liên kết sẽ không thành công, nhưng tệp bản đồ liên kết được viết.
  • Tìm tệp bản đồ liên kết. Đầu ra bản ghi từ trình liên kết hiển thị các tham số -map -Xlinker -/path/to/linkmapfile.txt. Nó nằm đâu đó trong thư mục DerivedData của dự án của bạn.
  • Tệp bản đồ liên kết hiển thị địa chỉ (cột đầu tiên) và kích thước (cột thứ hai) cho tất cả các ký hiệu. Đối với các biến toàn cầu, nó cho thấy tên và trong đó tập tin đối tượng chúng được đặt.
  • Bạn nên tìm địa chỉ của thông báo lỗi (0x0010C720 trong ví dụ) trong tệp bản đồ liên kết.
  • Bạn có thể kiểm tra tệp bản đồ liên kết cho các biểu tượng khác có kích thước lớn.

Vì vậy, điều này có thể giúp thu hẹp sự cố.

+1

Rất tiếc trong trường hợp này, trình liên kết không tạo tệp. –

+0

@TheDirtyCalvinist: Cảm ơn phản hồi. Rất tiếc, tôi không có nhiều ý tưởng hơn về cách giải quyết vấn đề này. –

2

Tôi đã gặp lỗi rất giống nhau. May mắn thay, tôi có thể nhớ lại khoảnh khắc khi nó xuất hiện, cuộn lại và so sánh các bản sửa đổi. Đó là danh mục có phương pháp tĩnh trên lớp học Google Analytics GAI. Tôi không biết tại sao nó lại xảy ra, vì các hạng mục khác trong dự án chỉ hoạt động tốt, nhưng hy vọng nó cũng giúp ai đó.

+0

Đây là trường hợp của tôi! Cảm ơn –

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