2012-08-31 17 views
6

Piszę prostą bibliotekę międzyplatformową, która używa OpenMP, ale nie mogę wymyślić jak przetestować go w aplikacji na iPhone'a.
biegnę OS X, z GCC 4.7, Skompilowałem go jako statyczne biblioteki, I udało się również połączyć je razem z libgomp.a i dodać go do mojej aplikacji testowej w Xcode. App buduje bez błędu lub ostrzeżenia, ale kiedy go uruchomić w symulatorze iPhone wszystko mogę to ten komunikat o błędzie:Kompilowanie biblioteki statycznej dla iOS, która używa OpenMP

dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address 
    Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib 
    Expected in: /usr/lib/libSystem.B.dylib 

dyld: Symbol not found: ___emutls_get_address 
    Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib 
    Expected in: /usr/lib/libSystem.B.dylib 

Czytałem, że nastąpił błąd w poprzednich wersjach GCC z ___emutls_get_address, ale powinno być Naprawiono teraz. Czy masz pojęcie, co może być nie tak?

+0

Połączyłeś swoje pliki nagłówkowe? Może fratowanie "fałszywego" schematu, takiego jak "Szczere pocztówki" i inne, pomogłoby ... – Ondrej

Odpowiedz

2

Poszukuje biblioteki dynamicznej, która nie istnieje. Ponieważ nie można korzystać z bibliotek dynamicznych na rzeczywistym urządzeniu, spowoduje to awarię na urządzeniu, ale nie podczas kompilacji. Powinieneś spróbować odbudować bibliotekę ręcznie jako pliki .aa i upewnić się, że używasz argumentów -l. To najlepsze, co mam dla ciebie. Zakładając, że to nie jest jailbreak (prawdopodobnie prawda), musisz po prostu połączyć je ręcznie. Zawsze możesz po prostu dodać pliki kodu biblioteki do projektu.

Mam nadzieję, że to pomoże.

Powiązane problemy