1. lipo
1.1 查看指令集架构(是否支持arm64):
lipo -info filePaht
e.g.:
victor@Victors-Mac-mini ~ % lipo -info ~/libopencv_calib3d.4.5.4.dylib
Non-fat file: ~/libopencv_calib3d.4.5.4.dylib is architecture: x86_64
victor@Victors-Mac-mini ~ % lipo -info ~ /libomp.dylib
Architectures in the fat file: ~/libomp.dylib are: x86_64 arm64
1.2 静态库拆分
# lipo 静态库源文件路径 -thin CPU架构名称 -output 拆分后文件存放路径
# 架构名为armv7/armv7s/arm64等,与lipo -info 输出的架构名一致
lipo WeChat -thin armv7 -output WeChat_armv7
lipo WeChat -thin arm64 -output WeChat_arm64
2. codesign
codesign --help
2.1 查看签名
比如我们看一下xcode的签名,我们使用 -d -v 参数,-d 是display展示签名信息的意思,-v 是verbose的意思,越多的verbose显示信息越多,通常3个就已经足够了。
codesign -d -vvv Xcode.app
显示证书中的其他信息呢,在查看时使用 --entitlements 选项可以查看,比如:
codesign -d --entitlements - /Applications/WeChat.app
2.2 签名
签名需要一个证书,我们可以打开 钥匙串应用 查看我们拥有的证书,或者通过命令行使用security命令访问钥匙串,查找可以签名的证书,
security find-identity -v -p codesigning
给未签名的文件签名,命令示例:
codesign -s "Apple Development: 809405715@qq.com (F8QTU2Z8TB)" *.app
codesign --force --verify --verbose --sign "Developer ID Application: XXXX. (XXXXXXX)" MMMMMM.framework
重签名,命令示例:
codesign -f -s "Apple Development: 809405715@qq.com (F8QTU2Z8TB)" *.app
2.3 删除签名
codesign --remove-signature /path/to/file
2.4 查看授权机制 (Entitlements)签名信息
授权信息会被包含在应用的签名信息中。如果你在这方面遇到了问题,可以尝试查看签名信息中具体包含了什么授权信息, 会列出一个和前面的很像的 XML 格式的属性列表。
codesign -d --entitlements - /path/to/app
2.5 验证签名
codesign -verify -vvv /path/to/app
1) 用于判断APP及所有framework是否签名工程,示例命令:
codesign -v --strict --deep --verbose=2 aaaaa.app
# 如果提示类似下面的提示,表示失败:
/Applications/ACDSeeMainApp.app: unsealed contents present in the root directory of an embedded framework
In subcomponent: /Applications/ACDSeeMainApp.app/Contents/Frameworks/opencv2.framework
表示这个framework签名不合格,需要查看此framework内部文件结构是否正常等,完成之后重新进行签名,再对APP进行签名。
2) 用于查看APP签名信息及嵌入到APP的dylib和framework等,示例命令:
codesign -d --deep --verbose=2 -r- aaaaa.app
提示如下表示成功:
3)
spctl --assess -vv NNNNN.app
# 提示如下表示成功:
aaaaa.app: accepted
source=Developer ID
origin=Developer ID Application: XXXXXXXXX. (XXXXXX)
3. otool
Mac OS X下可执行文件的动态链接库是*.dylib文件。而dylib等同于windows的dll和linux的so。Linux下用ldd查看依赖的相关库,ldd是list, dynamic, dependencies的缩写。在mac os 中使用的otool。
4. file命令查看库文件类型
file /Users/zhangwang/Documents/ACDSee_GitLab/ACDSeeMacPro4/SharedLibrary/opencv2.framework/opencv2
/Users/zhangwang/Documents/ACDSee_GitLab/ACDSeeMacPro4/SharedLibrary/opencv2.framework/opencv2: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64Mach-O 64-bit dynamically linked shared library x86_64] [arm64]
/Users/zhangwang/Documents/ACDSee_GitLab/ACDSeeMacPro4/SharedLibrary/opencv2.framework/opencv2 (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
/Users/zhangwang/Documents/ACDSee_GitLab/ACDSeeMacPro4/SharedLibrary/opencv2.framework/opencv2 (for architecture arm64): Mach-O 64-bit dynamically linked shared library arm64
zhangwang@zhangwangdeMacBook-Pro ~ %
Linux & MacOS
1. 执行可执行文件
Linux下执行一个可执行的文件,不需要命令,直接写文件路径,会自动执行
如:执行当前目录下的文件:./FileToCTool;
victor@Victors-Mac-mini TestCreateFolder % ./FileToCTool
Usage:
FileToCTool [-o "output path"] [-e "encryption key"] [-n "output name"] "input path"
victor@Victors-Mac-mini TestCreateFolder %
非当前目录下的文件执行直接用绝对路径,如:/hone/will/cmm。
当然,前提条件是该文件是可执行文件,当前登录的角色是有执行权限的用户
权限:-rwx rwx rwx,使用命令:ls -l 文件名
,查看文件权限,当前用户有x权限即可执行
2.
macOS 文件夹中的部分文件被lock,怎么用命令全部解锁,注意 我不清楚哪些文件被lock了
find /path/to/your/folder -flags uchg -exec chflags nouchg {} \;