开发常用命令记录(更新 ...)

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 {} \;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值