2016-09-20 60 views
6

gần đây chúng tôi bắt đầu nhận được cảnh báo này trên OS X của chúng tôi xây dựng.ld cảnh báo: ngăn xếp subl hướng dẫn là quá khác nhau từ lùn stack kích thước trên OS X

ld: warning: 
could not create compact unwind for __Z10createMenuv: stack subl instruction is too different from dwarf stack size 
ld: warning: 
could not create compact unwind for __Z10del_modulejb: stack subl instruction is too different from dwarf stack size 
could not create compact unwind for __Z14menu_patchbytev: stack subl instruction is too different from dwarf stack size 

Tôi có thể tìm thấy một số cuộc thảo luận về điều này trong trình theo dõi lỗi Chromium nhưng đề xuất "khắc phục" là tắt thế hệ thư giãn nhỏ gọn. Tôi muốn hiểu tại sao cảnh báo này xảy ra và nếu đó là vấn đề trong mã của chúng tôi hoặc trong chuỗi công cụ.

toolchain của chúng tôi là từ Xcode 7.3.1:

Apple LLVM version 7.3.0 (clang-703.0.31) 
Target: x86_64-apple-darwin15.6.0 

Trả lời

0

Khi làm một số nghiên cứu, câu trả lời tốt nhất mà tôi thấy rằng có một vấn đề với toolchain và không mã của bạn đặc biệt.

Nó đang được xây dựng dưới dạng 32 bit thay vì 64 bit. Và để giải quyết điều này, bạn cần thực hiện một trong hai điều sau:

  1. Sử dụng phiên bản 64 bit của chuỗi công cụ xCode thay vì 32 bit một.
  2. Cung cấp các tùy chọn thích hợp trong quá trình biên soạn nhằm phát x86_64 đang

Đó là lý do tại sao một số đề nghị tháo gỡ nhưng tôi không thấy bất kỳ tùy chọn để ngăn chặn các cảnh báo về Thư giãn nhỏ gọn. Dường như chỉ có một tùy chọn để bật cảnh báo -warn_compact_unwind.

Điều bạn có thể làm là chặn tất cả các cảnh báo trình liên kết chuyển qua tùy chọn -Wl, -w tới trình biên dịch.

Một giải pháp tạm thời khác mà bạn có thể thử là đi qua -Wl,-no_compact_unwind để vuốt. Nó sẽ hướng dẫn các mối liên kết không để tạo ra thông tin thư giãn nhỏ gọn.

Cuối cùng, hãy thử biên dịch kiến ​​trúc 64 bit. Để làm như vậy, bạn chỉ định kiến ​​trúc với tùy chọn trình biên dịch -arch - trong trường hợp của bạn là -arch x86_64. .

Tôi thấy hầu hết người dùng trỏ đến Xcode 7 và đôi khi Xcode 6 là sự cố được tạo.

Ngoài ra, còn có một phương pháp khác để sửa lỗi này.

Trong dự án Xây dựng cài đặt tìm thấy Tùy chọn xây dựng và đặt Không có tùy chọn Bật bitcode. Tôi hy vọng nó giúp ích cho bạn.

+0

chúng tôi không sử dụng Xcode IDE nhưng biên dịch từ dòng lệnh bằng trình điều khiển 'make' và' gcc'. –

+0

cũng có, chúng tôi có cảnh báo này cho x86 ('-arch i386') xây dựng, không x64 (' -arch x86_64') những người thân. –

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