macOS 开发命令行知识

universal 二进制

显示二进制的架构类型:

~# lipo -archs XXX

直接编译 universal 二进制程序:

~# g++ -std=c++11 -arch x86_64 -arch arm64 -o XXX_universal XXX.cpp

分别编译不同架构的程序,并使用 lipo 合并:

~# g++ -std=c++11 -target x86_64-apple-macos10.12 -o XXX_x86 XXX.cpp
~# g++ -std=c++11 -target arm64-apple-macos11 -o XXX_arm XXX.cpp
~# lipo -create -output XXX_universal XXX_x86 XXX_arm

otool

显示程序使用的动态库:

~# otool -L XXX

也可以使用环境变量,在运行程序时显示完整的依赖库:

~# DYLD_PRINT_LIBRARIES=1 DYLD_PRINT_LIBRARIES_POST_LAUNCH=1 DYLD_PRINT_RPATHS=1 ./XXX

显示加载命令:

~# otool -l XXX