① iOS開發中常用命令工具(xcode-select、lipo、xcrun等)
當安裝多個xcode的版本,使用該工具使用指定的版本。
-p 或者 --print-path 查看當前開發者目錄,也即是xcode的版本目錄。print the path of the active developer directory
-s <path> 或 --switch <path> 選擇xcode的版本
--install 安裝
--version 查看版本
--reset 恢復默認
sudo rm -rf /Library/Developer/CommandLineTools 強制刪除安裝目錄下的文件
是管理Fat File的工具, 可以查看cpu架構, 提取特定架構,整合和拆分庫文件。
Mac OS X下二進制可執行文件的動態鏈接庫是dylib文件。所謂dylib,就是bsd風格的動態庫。基本可以認為等價於windows的dll和linux的so。mac基於bsd,所以也使用的是dylib。
otool命令介紹
MobSF
Mach-O 文件格式解析
xcodebuild :通過工程文件,生成app文件。
xcrun :通過app文件,來生成ipa文件(包含了簽名的過程)。
通過app文件生成ipa文件
libtool是一個通用庫支持腳本(/usr/bin/libtool),將使用動態庫的復雜性隱藏在統一、可移植的介面中。
可以在不同平台上創建並調用動態庫,我們可以認為libtool是gcc的一個抽象,也就是說,它包裝了gcc或者其他的任何編譯器,用戶無需知道細節, 只要告訴libtool說我需要要編譯哪些庫即可,並且,它只與libtool文件打交道,例如lo、la為後綴的文件。
libtool工具的使用
庫是一單獨的文件,裡麵包含了按照特定的結構組織起來的其它的一些文件(稱做此庫文件的member)。原始文件的內容、模式、時間戳、屬主、組等屬性都保留在庫文件中。
詳細命令參見, 菜鳥網路-ar命令
可以用來創建、修改庫,也可以從庫中提出單個模塊。
lipo libAFNetworking.a -thin arm64 -output lib-arm64.a 生成Arm64包
ar -t lib-arm64.a 輸出包含的.o文件 和 otool -L libAFNetworking.a 一樣。
ar -x lib-arm64.a 解壓出包裡面的.o文件
在iOS開發中,常常用來分析二進制和靜態庫文件。
列出 .o .a .so 中的符號信息,包括諸如符號的值,符號類型及符號名稱等。所謂符號,通常指定義出的函數,全局變數等等。
iOS開發中,可以用來查看.a靜態庫所有打包進去的.o文件和函數介面信息,幫助我們定位崩潰信息。
例如: nm -u libAFNetworking.a 列出某個.o文件的介面信息。
二進制查看命令,將文件顯示為16進制字元串表示形式。
例如: xxd libYTKNetwork.a | grep "net" 查看YTKNetwork.a文件裡麵包含net字元串的,幫助我們分析一些二進制文件。
DWARF文件初探——提取輕量符號表
Mac系統下lipo, ar, nm等工具的使用簡介
美團 iOS 工程 zsource 命令背後的那些事兒
Linux工具參考篇
iOS 靜態庫沖突 兩個不同的.o 文件沖突 ,靜態庫分離