Як перевірити, чи побудована статична бібліотека для 64-розрядних?


74

Я щойно створив статичну бібліотеку для iOS із налаштуванням збірки для Architectures, встановленим на $(ARCHS_STANDARD_INCLUDING_64_BIT).

Я хочу переконатися, що бібліотека .a правильно включає цю архітектуру, але коли я запускаю lipo -infoна ній, я бачу:

Архітектури в жировому файлі: library.a: armv7 armv7s (cputype (16777228) cpusubtype (0))

Чи означає це, що arm64 не включений? Якщо команда lipo не може сказати мені, чи є інший спосіб сказати?

Я використовую Xcode 5 із встановленими найновішими інструментами командного рядка.

Відповіді:


119

Так, є фрагмент arm64. Щоб побачити це, вам потрібно скористатися lipoз набору інструментів iOS, а не з хост-системи (яка не знає про arm64):

xcrun -sdk iphoneos lipo -info $(FILENAME)

1
Мені цікаво про різницю між / usr / bin / lipo та lipo xcrun. Здається, вони не одне і те ж.
pshah

2
@pshah Здається, на основі відповіді Стівена, що / usr / bin / lipo - це версія Lipo для Mac, тоді як lipo xcrun - це lipo XCode. Отож оновлення до XCode 5 означало отримання нового lipo через xcrun.
Джоел Фішер,

23
Імовірно через те, що один вийшов за іншим, той, lipoщо поставляється з v10.9, схоже, вродливо розпізнає arm64. Не потрібно нічого викликати з Xcode. Запуск просто lipo -info $(FILENAME)повідомлявся arm64серед інших для відповідної бібліотеки для мене під час тестування.
Томмі

На моїй машині, що працює під управлінням macOS High Sierra, lipos є одно і тим же.
saagarjha

@saagarjha Так, набір інструментів за замовчуванням lipoтепер знає про всі підтримувані архітектури; цього не було, коли arm64 був новим.
Стівен Канон

66

старий добрий теж fileможе зробити трюк:

$ file libTestFlight.a

libTestFlight.a: Mach-O universal binary with 5 architectures
libTestFlight.a (for architecture armv7):   current ar archive random library
libTestFlight.a (for architecture armv7s):  current ar archive random library
libTestFlight.a (for architecture i386):    current ar archive random library
libTestFlight.a (for architecture x86_64):  current ar archive random library
libTestFlight.a (for architecture cputype (16777228) cpusubtype (0)):   current ar archive random library

Здається, ще ніхто в Apple не піклувався про те, щоб додати arm64 cputype file.

Цікаво, що в iOS 7 Tech Talk Videos ("Архітектура сучасних програм, частина 2", сторінка PDF, 35) вони показують результати роботи робочого файлу:

введіть тут опис зображення


1
на якій версії ОС ви? Я працюю на версії 10.9.1, а у "файл" вказано лише cputype замість arm64.
Олівер Мейсон

Я не бачу arm64 у вашому прикладі, що було, що я мав проблеми з побаченням
Джоель Фішер

2
дуже
простий

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.