Rozwijam aplikację w Xcode.
Kiedy próbuję budować, pojawia się ten błąd:
ld: in /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o, file too small for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Czy ktoś wie, co się stało?
TWRAppDelegate.o
plik uszkodzony lub o zerowym rozmiarze.Odpowiedzi:
Kradzież odpowiedzi @ martin-baulig:
Spróbuj przeprowadzić pełną przebudowę / czyszczenie. Możliwe, że poprzednia kompilacja została nieprawidłowo przerwana, pozostawiając plik TWRAppDelegate.o uszkodzony lub ma zerowy rozmiar.
źródło
Zwykle dodaję spację (może to być dowolny znak) do danego pliku, usuwam go, a następnie zapisuję. Łatwiejsze i szybsze niż czysta kompilacja.
źródło
Aby automatycznie rozwiązać ten problem,
Build Script Phase
można dodać. Idź do Xcode -> Your Project -> Your Target -> Build Phases -> + -> New Run Script PhaseZmień jego nazwę na
Xcode Link Fix
i przenieś go powyżejCompile Sources
fazy. Wklej to do treści skryptu:# Legacy build system legacy_dir=`dirname "${LD_DEPENDENCY_INFO_FILE}"` if [ -d "${legacy_dir}" ]; then find "${legacy_dir}" -size 0 | while read -d $'\n' file; do rm "$file" done fi # New build system if [ -d "${OBJECT_FILE_DIR_normal}" ]; then find "${OBJECT_FILE_DIR_normal}" -size 0 | while read -d $'\n' file; do rm "$file" done fi
Ten skrypt sprawdza pliki obiektowe o zerowym rozmiarze i usuwa je, więc po zakończeniu kompilacji w następnym kroku kończy się sukcesem.
Musisz dodać ten skrypt dla każdego celu aplikacji, jeśli masz ich wiele.
Uruchomienie tego skryptu zajmuje około 0,1 sekundy i pozwala uniknąć pełnej przebudowy projektu.
źródło
rm -rf /Users/hostname/Library/Developer/Xcode/DerivedData
źródło
po prostu usuń ten plik, uruchamiając cmd w aplikacji terminala:
źródło
Szybki sposób na naprawienie błędu bez całkowitego czyszczenia pamięci podręcznej:
TWRAppDelegate
)źródło
Ponieważ tworzenie czystego projektu może zająć zbyt dużo czasu, istnieje krótsza droga dla tych, którzy mają dostęp do pliku, który jest uszkodzony w pamięci podręcznej:
Pełna wersja, więc nie masz problemu ze znalezieniem pliku:
źródło
Możesz po prostu usunąć plik TWRAppDelegate.o i kontynuować budowanie. Skopiuj pełną ścieżkę wymienioną w komunikacie o błędzie i wklej ją za poleceniem „rm” w swoim terminalu. Nie ma potrzeby czyszczenia / przebudowywania, usuwania danych pochodnych, dodawania / usuwania pliku z projektu itp.
źródło
Krok 1. Przejdź do: Projekt> Ustawienia kompilacji> Ścieżki wyszukiwania
Krok 2. Ustaw opcję „Zawsze wyszukuj ścieżki użytkownika” na Tak
Krok 3. Skompiluj projekt (otrzymasz ostrzeżenie, ale projekt zostanie zbudowany).
Krok 4. Ustaw „Zawsze przeszukuj ścieżki użytkownika” z powrotem na Nie i buduj ponownie, aby wyeliminować ostrzeżenie
źródło
Czysta odbudowa nie zadziałała w moim przypadku, więc wyjaśniam, jak rozwiązałem problem:
- Usunięto odniesienie do pliku (nie usuwaj pliku)
- Ponownie dodaj plik do projektu i uruchom
źródło