2010-10-24 16 views
5

Próbowałem portu jakiś kod na Mac OS X.Problem na Mac: „Nie można znaleźć rejestr w klasie Breg podczas przeładowywania ASM”

Program wykorzystuje „ttmath” Biblioteka, nagłówek big-num biblioteka nagłówków. Ta biblioteka działa dobrze zarówno na Windows i Linux, ale gdy próbuję skompilować i uruchomić go na komputerze Mac, następujący komunikat o błędzie zawsze pokazuje się:

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

znalazłem niektóre dokumenty mówią, że ten problem jest spowodowany stara wersja kompilatora GCC (kompilacja 5488), ale ten komunikat nadal pojawia się po aktualizacji GCC.

obecnie moja wersja GCC jest:

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

i system operacyjny to: Mac OS X w wersji 10.5.8

nie mogę znaleźć żadnych użytecznych informacji o tym, jak rozwiązać ten problem, jest czy ktoś może mi pomóc? Wielkie dzięki!

+2

Widziałem ten błąd podczas kompilacji non-PIC-bezpieczny kod montaż z -fPIC. Może gcc Maca domyślnie włącza tę opcję, a kod ttmath nie jest bezpieczny dla PIC? (Bardziej szczegółowe informacje o tym, skąd dokładnie pochodzi błąd, są pomocne). – vanza

+0

Wiesz, GCC ma teraz wersję 4.5. Aktualizacja do wersji 4.0.1 jest wciąż bardzo stara. – Puppy

+0

Jeśli używasz bieżącego Xcode (3.x), otrzymasz gcc 4.2. Myślę, że może to wymagać aktualizacji do wersji OS X 10.6. –

Odpowiedz

2

Dzięki za DeadMG! Ten problem spowodowany jest opcją PIC-safe.

dodałem "-mdynamic-no-pic" i "-fno-pic" kiedy skompilować kod i to działa dobrze teraz :)