我有一個由其他公司構建的靜態庫。我想知道它是否包含位碼的靜態庫,哪個命令可以在終端中檢測到它?如何檢查靜態庫是否包含位碼?
回答
你可以試試: otool -L(或的.o某文件)
並查找 「__bitcode」 部分
有人在這裏找到答案: How do I xcodebuild a static library with Bitcode enabled?
建議對LLVM符號進行測試:
otool -l yourlib.a | grep的LLVM
你應該得到一些線, 「__LLVM」
我試了一下,但沒有發現任何東西,我確信yourlib.a包含位碼。 – xCocoa
你有存檔嗎? – SeikoTheWiz
您能否指出您的索賠來源?我爲什麼要grep for'LLVM'? – Paul
由於這是alread寫在其他的答案,
otool -l yourlib.a | grep bitcode
或
otool -l yourlib.a | grep __LLVM
是要走的路。
但在我的情況下(XCode 7,靜態iOS庫),這沒有奏效(另請參閱xCocoa的評論)。
看來,otool
不報告位代碼,如果包括iPhone模擬器的架構代碼(x86_64或arm64)。
你可以列出的lib的架構:
lipo -info yourlib.a
然後你就可以單獨檢查位碼爲每建築,e.g:
otool -arch armv7 -l yourlib.a | grep bitcode
otool -arch arm64 -l yourlib.a | grep bitcode
是否正確:如果靜態庫不是用'ENABLE_BITCODE = NO'構建的,它不能用於具有'ENABLE_BITCODE = YES'的目標?相對正確嗎? –
@EugeneDubinin Bitcode只是一些額外的信息,所以除了稍微增加的大小之外,它沒有任何傷害。但是,二進制碼中缺少位代碼意味着您無法將其鏈接到需要位代碼的目標(即啓用位代碼)。 – Mazyod
請注意,如果您使用'-fembed-bitcode-marker'編譯而不是'-fembed-bitcode'(檢查編譯器輸出),則可能會因爲這些命令而導致誤報,因爲存在位標記「marker」只是不是實際的位碼。 [這個答案](https://stackoverflow.com/a/34965178/72176)有更多的信息。 –
免責聲明:我LibEBC的作者。
您可以使用ebcutil
來查看Mach-O二進制文件或庫中是否存在位代碼。你甚至可以用它從中提取嵌入的位碼。
如果你想檢查是否在靜態庫中的特定文件(yourFile.o)
是位碼啓用後,您可以提取'staticLibrary.a'
並使用相同的otool
命令。但是,macOS不允許使用默認提取實用程序提取staticLibrary.a,大多數第三方工具也無法運行。
您可以按照下列步驟檢查特定.o
文件
獲取架構
脂-info yourStaticLibrary的信息。一個
例如輸出:ARMv7的arm64
提取
yourStaticLibrary.a
用於上述架構脂yourStaticLibrary.a - 變薄的ARMv7 -output的任何者或兩者yourStaticLibraryarmv7.a
你得到,然後可以使用默認MAC容易取出取檔
在提取
'yourStaticLibraryarmv7.a'
,你再得到一個文件夾'yourStaticLibraryarmv7'
包含所有.o文件otool -l yourFile.o | grep bitcode
或與特定架構otool -arch的ARMv7 -l yourFile.o | grep的位碼
(指定要提取到輸出路徑)
如果該文件已啓用位碼,你在命令行
默認的mac unarchiver讓我感到悲傷,所以你可以試試這個命令'ar -t yourStaticLibraryarmv7.a'來查看.o文件列表,並且'ar -xv yourStaticLibraryarmv7.a yourFile.o' – yano
- 1. 檢查靜態庫是否包含在Windows
- 2. cmake檢查庫是否是靜態的
- 3. 檢查數據庫是否包含表
- 4. 如何檢查DataTable是否包含DataRow?
- 5. 如何檢查NSString是否包含'%'?
- 6. 如何檢查HashSet是否包含值?
- 7. 如何檢查url是否包含「main.php」
- 8. 如何檢查CGContext是否包含點?
- 9. 靜態檢查const char *包含空格
- 10. 檢查是否包含jQuery
- 11. 檢查是否行包含/ *
- 12. 可可觸摸靜態庫是否可以包含另一個靜態庫?
- 13. 如何爲Core Plot包含靜態庫?
- 14. 如何生成「自包含」靜態庫?
- 15. 如何檢查raw_input是否包含3位數字?
- 16. 如何檢查按位OR是否包含特定值?
- 17. iOS靜態庫 - 是否可以在我的庫中包含AdSupport.framework?
- 18. 靜態庫不包含宏
- 19. Java:如何檢查BufferedReder是否爲空?(包含代碼)
- 20. 如何檢查圖像是否包含源代碼?
- 21. 如何檢查數據庫是否包含用戶名和密碼?
- 22. Android檢查位圖是否包含另一個位圖
- 23. 我如何總是包含來自靜態庫的符號?
- 24. 檢查類是否有靜態方法
- 25. 如何檢查靜態庫以查看調試符號是否正在導出?
- 26. 如何檢查Uris是否等於不包含查詢部分?
- 27. 如何檢查並查看數字是否包含小數?
- 28. 如何檢查url是否包含查詢字符串
- 29. 如何檢查數組以查看它是否包含零值?
- 30. 如何檢測表是否包含表?
我的發展是Xcode7和EI匹10.11.1,我使用的命令得到「sectname __bitcode」,但無法找到「__bitcode 「部分 – xCocoa