Mam statyczną bibliotekę zbudowaną przez inną firmę. Chcę wiedzieć, czy jest to statyczna biblioteka zawierająca kod, który polecenie może wykryć w terminalu?Jak sprawdzić, czy biblioteka statyczna została zbudowana, zawiera kod bitu?
Odpowiedz
Można spróbować: otool -l (.o lub .a plik)
i poszukaj sekcji "__bitcode"
Został tu odpowiedzi: How do I xcodebuild a static library with Bitcode enabled?
Zaleca się testowanie z symbolami LLVM:
otool -l yourlib.a | grep LLVM
Powinieneś dostać kilka linii z "__LLVM"
Próbuję go, ale niczego nie znalazłem, yourlib.a zawiera kod bitu, jestem pewien. – xCocoa
Czy tworzyłeś archiwum? – SeikoTheWiz
Czy możesz podać źródło swojego roszczenia? Dlaczego powinienem grep dla 'LLVM'? – Paul
Jak zostało napisane w innych alread odpowiedzi,
otool -l yourlib.a | grep bitcode
lub
otool -l yourlib.a | grep __LLVM
jest droga.
Ale w moim przypadku (XCode 7, statyczna biblioteka iOS) to nie działało (patrz także komentarze przez xCocoa).
Wygląda na to, że otool
nie zgłasza bitu, jeśli dołączono kod architektury iPhone Simulator (x86_64 lub arm64).
Można wymienić architektur lib jest z:
lipo -info yourlib.a
Następnie można sprawdzić bitcode dla każdej architektury oddzielnie, np:
otool -arch armv7 -l yourlib.a | grep bitcode
otool -arch arm64 -l yourlib.a | grep bitcode
Czy jest prawidłowe: jeśli biblioteka statyczna nie została skompilowana z 'ENABLE_BITCODE = NO', to nie może być używana z elementu docelowego, który ma" ENABLE_BITCODE = YES "? Czy jest też przeciwnie? –
@EugeneDubinin Bitcode to tylko kilka dodatkowych informacji, więc nie ma nic złego poza nieznacznie zwiększonym rozmiarem. Jednak brak bitu w pliku binarnym oznacza, że nie można go połączyć z celem, który wymaga kodu bitcodowego (tzn. Włączony jest kod bitcodowy). – Mazyod
Należy pamiętać, że jeśli kompilujesz z '' -fembed-bitcode-marker', a nie '-fembed-bitcode' (sprawdzaj dane wyjściowe kompilatora), możesz uzyskać fałszywe pozytywne z tymi poleceniami, ponieważ obecny jest" znacznik "bitu, po prostu nie faktyczny bitcod. [Ta odpowiedź] (https://stackoverflow.com/a/34965178/72176) ma więcej informacji na ten temat. –
Oświadczenie: Jestem autorem LibEBC.
Możesz użyć numeru ebcutil
, aby sprawdzić, czy w binarnie lub bibliotece Mach-O występuje kod. Możesz nawet użyć go do wyodrębnienia z niego osadzonego bitcodu.
A jeśli chcesz sprawdzić, czy dany plik (yourFile.o)
w bibliotece statycznych jest bitcode włączona, można wyodrębnić 'staticLibrary.a'
i użyć tego samego polecenia otool
. Jednak macOS nie pozwala na wyodrębnienie pliku staticLibrary.a czasami za pomocą domyślnego narzędzia wyodrębniania, a większość narzędzi innych firm również nie działa.
Możesz śledzić kroki, aby sprawdzić konkretne .o
plików
uzyskać informacje o architekturze
lipo -info yourStaticLibrary.
np Wydajność: ARMv7 arm64
Ekstrakt
yourStaticLibrary.a
na jeden lub oba z powyższej architekturzelipo yourStaticLibrary.a -thin ARMv7 -Output yourStaticLibraryarmv7.a
(określić ścieżkę wyjściową chcesz wyodrębnić do)
Dostajesz
'yourStaticLibraryarmv7.a'
które następnie można łatwo wydobyć z domyślnym mac UnarchiverNa wydobycia, następnie dostać folder '
yourStaticLibraryarmv7'
zawierającą wszystkie .o plikiotool -l yourFile.o | grep bitcode
lub z konkretnym architekturyotool -arch ARMv7 -l yourFile.o | grep bitcode
Jeśli plik jest włączona bitcode, masz 'sectname __bitcode' w linii poleceń
domyślny Unarchiver Mac dawał mi żal, więc możesz wypróbować to polecenie 'ar -t yourStaticLibraryarmv7.a', aby zobaczyć listę plików .o, i 'ar -xv yourStaticLibraryarmv7.a yourFile.o' – yano
- 1. Czy jest w Linuksie polecenie, aby dowiedzieć się, czy biblioteka została zbudowana w trybie 32- lub 64-bitowym?
- 2. Biblioteka statyczna Xcode 6.1. Dla systemu iOS nie została wygenerowana
- 3. Jak sprawdzić, czy element zawiera kod HTML przed usunięciem? jQuery
- 4. Python3: sprawdzić, czy metoda jest statyczna
- 5. Jak sprawdzić, czy struktura została zainicjowana?
- 6. Biblioteka statyczna załadowana dwukrotnie
- 7. Znajdź, czy aplikacja została zbudowana przy użyciu Xamarin?
- 8. Biblioteka statyczna Swift
- 9. Jak sprawdzić, czy $ compile została zakończona?
- 10. Dowiedz się, która wersja Go a Binary została zbudowana?
- 11. Jak mogę sprawdzić, czy instancja została utworzona?
- 12. Jak sprawdzić, czy wiadomość została pomyślnie wysłana?
- 13. Jak sprawdzić, czy animacja UITableView została zakończona?
- 14. Jak sprawdzić, czy klasa została zainicjowana?
- 15. Jak sprawdzić, czy metoda jest statyczna w PHP?
- 16. jak sprawdzić, czy lista zawiera podmenu
- 17. Jak zmusić gcc połączyć nieużywany biblioteka statyczna
- 18. Jak sprawdzić, czy tekst zawiera tylko liczby?
- 19. Jak sprawdzić, czy moja tablica zawiera obiekt?
- 20. Jak mogę sprawdzić, czy zmienna zawiera lambdę?
- 21. Jak sprawdzić, czy zmienna VARCHAR zawiera podłańcuch?
- 22. Jak sprawdzić, czy bitmask zawiera bit?
- 23. Jak sprawdzić, czy słownik zawiera określone klucze?
- 24. Jak sprawdzić, czy obiekt zawiera tablicę bajtów?
- 25. Jak sprawdzić, czy współdzielona biblioteka linux została wstępnie załadowana przy użyciu LD_PRELOAD
- 26. Aby sprawdzić, czy ciąg zawiera określone słowo
- 27. Jak mogę sprawdzić, czy metoda jest statyczna za pomocą odbicia?
- 28. Biblioteka stołu Lua została usunięta?
- 29. Dlaczego usługa WebMethod została zadeklarowana jako statyczna?
- 30. Link Visual C againts Biblioteka statyczna MinGW
Mój rozwój jest Xcode7 i El Capitan 10.11.1 użyłem komendy, ale nie może znaleźć „__bitcode "sekcja – xCocoa