Xcode4 Problem Z Linkowaniem. Plik został zbudowany dla archiwum, które nie jest połączoną architekturą (arm6)

Ostatnio przełączyłem się na Xcode4 i podczas kompilacji projektu dostałem następujący błąd.

ld: warning: ignoring file /Users/myname/Library/Developer/Xcode/DerivedData/appname-hezrgyqimckztgbdlslkavphdclw/Build/Products/Debug-iphoneos/libTapkuLibrary.a, file was built for archive which is not the architecture being linked (armv6)
Undefined symbols for architecture armv6:
  "_OBJC_CLASS_$_TKLoadingView", referenced from:
      objc-class-ref in RootViewController.o

Otworzyłem TapkuLibrary i sprawdziłem, czy jego architektura jest ustawiona na ' Standard (armv6 armv7)'.

Co mogę zrobić, aby rozwiązać ten problem?

Author: Seunghoon, 2011-03-14

17 answers

Rozgryzłem, co spowodowało problem. Zmieniłem "Build Active Architecture Only" TapkuLibrary z Yes na No i kompiluje się bez problemu.

 111
Author: Seunghoon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-14 20:57:23

Udało mi się rozwiązać ten problem, wykonując odwrotność zaakceptowanej odpowiedzi - zmieniłem "Build Active Architecture Only" Z " nie " na "tak".

 35
Author: Josh Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:30:01

Miał ten sam problem. Ale powód był inny. Korzystałem z biblioteki.plik zbudowany dla symulatora i próbuje uruchomić go na urządzeniu.. dowiedziałam się, że potrzebuję czegoś innego .pliki dla symulatora i urządzenia. Mam nadzieję, że to komuś pomoże;)

Na przykład tutaj zaimportowałem Różne pliki biblioteki dla urządzenia i symulatora

 11
Author: Zaraki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-24 07:16:16

Spotkałem się z tym problemem, gdy uaktualniłem XCode do 4.5 i iOS do iOS6. Dla GMGridView to się stało. Nie dla symulatora, ale tylko dla urządzenia.

Naprawiłem to w następujących krokach: 1) Przejdź do GMGridView project - > Build Settings 2) w Ustawieniach -> architektury, wybierz "Standard (armv7, armv7s)"

Następnie wyczyść wszystkie (łącznie z DerivedData) i Przebuduj.

Mam nadzieję, że to pomoże!

 11
Author: sonoshin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-20 13:39:58

Spróbuj usunąć architekturę armv6 i skompilować ją tylko dla armv7.

 6
Author: Macmade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-15 22:59:01

Coś innego, co działało dla mnie było upewnienie się, że wszystkie projekty podrzędne mają architekturę ustawioną na armv6 i armv7, upewniając się, że zarówno cel, jak i projekt każdego projektu podrzędnego. Po wyczyszczeniu i odbudowie wszystko działało bez problemu.

 2
Author: AndyDunn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-26 14:33:03

To rozwiązało mi problem:

Niektóre zewnętrzne biblioteki jak three20 robiły dodatkowe ustawienia dla

Build Settings->Architectures - > Any iOS SDK

Wartość "armv6 armv7" różni się od standardowej "armv7 armv7s"

Rozwijane i wybierz "Standard", to działało dla mnie.

 2
Author: Val,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 06:46:16

Udało mi się to klikając w" nieprzyjazny " projekt (w moim przypadku GMGridView). W zakładce "Architektura" zmieniłem wartość z czegoś (już nie pamiętam dokładnie, chyba było:) "armv7, armv6s" na "armv7, armv7". Potem mi się udało.

 2
Author: tmighty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-10 05:56:41

Udało mi się to rozwiązać, tworząc konfigurację adhoc wewnątrz ustawień Tapku info...

XCODE 4, Project> Archive = library not found for-lTapkuLibrary-Issues - devinross/tapkulibrary-GitHub

 1
Author: epinom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-05 13:18:38

Upewnij się, że warianty budowania w twoich projektach są ustawione na "normalne".

Jeśli budujesz projekt, który zawiera inne projekty, zajrzyj do folderu DerivedData dla głównego projektu. Sprawdź pliki archiwum za pomocą " lipo-info yourarchive.a". Sprawdź także znaczniki czasu w tych archiwach. Może się okazać, że te biblioteki nie są przebudowywane lub próbujesz połączyć się ze starą wersją archiwum, która jest niewłaściwą architekturą.

In my przypadek, i zamknąć Xcode i usunięte DerivedData folder dla mojego głównego projektu. Wymusiło to pełną przebudowę, gdy ponownie otworzyłem główny projekt w Xcode 4. Pełna przebudowa spowodowała utworzenie archiwów i386 (lub znalezienie poprawnej wersji) i poprawne połączenie wersji symulatora.

 1
Author: russes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-03 05:33:13

To mi się udało:

  1. Kliknij na plik 'Project' frameworka (XCODEPROJ).

  2. Przejdź do zakładki "Informacje" dla 'projektu' frameworka (Nie 'celu').

  3. Rozwiń "konfiguracje" i upewnij się, że zarówno "Debug", jak i "Release" mają ustawione 2 konfiguracje-jedna dla "projektu" frameworka, a druga dla "celu" frameworka. W przypadku frameworków' Target ' kompiluje się do biblioteki, a nie do aplikacji, więc łatwo jest pogubisz się.

  4. 'Debug' powinien mieć ustawiony projekt na 'Debug', a Biblioteka na 'Shared'

  5. 'Release' powinien mieć ustawiony Projekt Na 'Release' i bibliotekę na 'Shared'

  6. Kompiluj, uruchamiaj i ciesz się.

  7. Jeśli skończyłeś na zniekształcaniu całego projektu próbując to rozgryźć, możesz chcieć dwukrotnie sprawdzić fazy budowania projektu aplikacji (zgodnie z sugestią Gon). Biblioteka powinna być tam podświetlona na Czerwono, nawet jeśli nie istnieje na Twoim dysku. Jeśli nie, dopóki jest ustawiony na "udostępniony", powinieneś być w stanie dodać go ponownie.

  8. Jeśli naprawdę naprawdę zniszczyłeś swój projekt, możesz być zmuszony do zdmuchnięcia folderu DerivedData, zgodnie z sugestią russesa. Sprawdź również "Organizer", ponieważ Xcode ma sposób na zapisywanie bzdur w całym miejscu.

  9. I sprawdziłeś, czy 'armv6' jest w porządku? :)

 1
Author: David Scott Kirby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-29 18:12:57

Jeśli dostanę ostrzeżenie o ignorowaniu pliku-uruchomiłbym lipo -info na ignorowanym pliku, aby znaleźć jego architekturę jak poniżej

lipo -info libTapkuLibrary.a

To drukowałoby albo i386, armv6, armv7, armv7s, x86_64 itd. Ogólnie rzecz biorąc, ta architektura musi pasować do docelowej platformy budowania. Np.

  • i386 = iOS simulator lub 32 bit build na mac os X
  • armv6 armv7 arm7s = urządzenie ios
  • x86_64 = 64 bit budowany na mac os X

W zależności od niedopasowania, albo musisz Przebuduj bibliotekę na platformę docelową lub zmień platformę docelową.

Uwaga: dla plików binarnych fat, lipo -info wyświetli kombinację powyższych architektur.

 1
Author: Kiran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-19 06:25:16

Naprawiłem ten problem dzięki innemu wątkowi, w którym pokazują, że armv6 / armv7 jest rzeczywiście trochę inny niż to, co myślisz, że jest: Aktualizacja do Xcode 4 błąd Brak architektur do kompilacji dla

 0
Author: pottedmeat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:14

Żadna z tych odpowiedzi nie zadziałała. (Podobny komunikat ostrzegawczy, inny statyczny projekt biblioteki). Dla mnie było to skonfigurowanie XCode do honorowania katalogów budowania obiektów docelowych, a następnie zbudowanie obiektów docelowych w lokalnym katalogu build/, co spowodowało problem. Skonfigurowanie Xcode do korzystania z folderu "Derived data" naprawiło to.

 0
Author: PEZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-08 09:59:31

Miałem taki problem z biblioteką Three20. Rzeczą, która w końcu zrobił to dla mnie było przełączenie formatu projektu z Xcode 3.1 do Xcode 3.2-pozostawiając "build active arch only "jako " nie".

 0
Author: FishStix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-03 07:01:41

Wypróbowałem wszystkie powyższe opcje i żadna nie zadziałała.

To jest właściwa odpowiedź:

Po prostu przeciągnięcie frameworka w projekcie nie połączy go poprawnie (lub coś w tym stylu, w każdym razie)

Musisz wybrać framework, który chcesz dodać w fazie budowania (kliknij niebieską ikonę projektu, następnie wybierz nazwę projektu w zakładce cele, a następnie zakładkę fazy budowania), Zobacz tutaj aby uzyskać więcej informacji.

 0
Author: Gon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:53

Miał ten sam problem i próbował różnych rozwiązań ze strony bez skutku. Nadal miałem wiadomość, że moja biblioteka nie została zbudowana dla arm64.

Wreszcie jak to rozwiązałem:

  • otworzył projekt.pbxproj dla biblioteki w edytorze tekstu
  • szukano VALID_ARCHS
  • były 4 zdarzenia, 2 z których nie zawierały arm64
  • ręcznie dodałem arm64 w łańcuchu (VALID_ARCHS = " arm64 i386 armv7 armv7s")
  • odbudować lib i było dobrze

Wydaje się, że czasami ustawienia kompilacji wyświetlane przez XCode są niekompletne i nie odpowiadają dokładnie plikowi make.

 0
Author: Eino Gourdin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-02 14:40:06