2010-10-24 22 views
5

Tôi cố gắng để cổng một số mã trên Mac OS X.Vấn đề trên Mac: "Không thể tìm thấy một thanh ghi trong lớp Breg khi tải lại asm"

Chương trình sử dụng các "ttmath" thư viện, một tiêu đề lớn-num thư viện tiêu đề. Thư viện này hoạt động tốt trên cả Windows và Linux, nhưng khi tôi cố gắng để biên dịch và chạy nó trên một máy Mac, thông báo lỗi sau luôn xuất hiện:

"can't find a register in class 'BREG' while reloading 'asm'". 

tôi tìm thấy một số tài liệu nói rằng vấn đề này là do phiên bản cũ của trình biên dịch GCC (xây dựng 5488), nhưng thông báo này vẫn xuất hiện sau khi tôi cập nhật GCC.

hiện phiên bản GCC của tôi là:

i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5490) 

và hệ điều hành là: Mac OS X phiên bản 10.5.8

tôi không thể tìm thấy bất kỳ thông tin hữu ích về cách giải quyết vấn đề này, là có ai có thể giúp tôi không? Cảm ơn rất nhiều!

+2

Tôi đã nhìn thấy lỗi này khi biên dịch mã lắp ráp phi PIC-an toàn với -fpic. Có lẽ gcc của Mac mặc định có tùy chọn đó và mã ttmath không an toàn cho PIC? (Chi tiết về chính xác lỗi đến từ đâu sẽ hữu ích.) – vanza

+0

Bạn biết đấy, GCC có phiên bản 4.5 ngay bây giờ. Cập nhật lên 4.0.1 vẫn còn cũ. – Puppy

+0

Nếu bạn sử dụng Xcode hiện tại (3.x) thì bạn sẽ nhận được gcc 4.2. Tôi nghĩ rằng điều này có thể yêu cầu bạn nâng cấp lên OS X 10.6. –

Trả lời

2

Cảm ơn DeadMG! Vấn đề này là do tùy chọn an toàn PIC.

tôi thêm "-mdynamic-no-pic""-fno-pic" khi tôi biên dịch mã, và nó hoạt động tốt bây giờ :)

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