美文网首页iOS Developer
macOS常用二进制工具

macOS常用二进制工具

作者: Worthy | 来源:发表于2017-05-10 20:52 被阅读769次

macOS平台下Framework开发过程中经常需要用到各种工具,下面做个总结以防遗忘。每个工具命令只举几个例子,详细使用帮助可以通过man查询。

xcodebuild

build Xcode projects and workspaces

这个工具可以用来编译xcode工程:

xcodebuild -project MyFramework.xcodeproj -scheme MyFramework -configuration Release CONFIGURATION_BUILD_DIR='~/Desktop/build/arm'

xcrun

Run or locate development tools and properties.

通常用xcrun来生成ipa包:

xcrun -sdk iphoneos -v PackageApplication ./build/Release-iphoneos/Toyun.app -o ~/Desktop/Toyun.ipa

libtool

create libraries
创建库。mac平台下的Framework依赖另外一个Framework,编译后默认是不会合并成一个的,如果想要给出一个Framework可以使用这个工具。

合并两个静态库:

libtool -static -o c a.framework/a b.framework/b

ar

create and maintain library archives
这个命令用于创建和管理归档(archive)文件。主要应用是解决第三方库冲突,例如ffmpeg冲突就可以用ar分离出冲突文件,并打包。

将.o从.a静态库中删除:

ar -d lib.a conflict.o

将.a文件解压缩:

ar -x lib.a

lipo

create or operate on universal files
lipo主要用于处理通用二进制文件。

查看架构信息:

lipo -info a.framework/a

合并生成一个胖包:

lipo -create Debug-iphoneos/a.framework/a Debug-simulators/a.framework/a -output aout

分离出armv7版本库:

lipo a.framework/a -thin armv7 -output aout

nm

display name list (symbol table)

展示符号信息:

nm -nm a.out

otool

object file displaying tool
比nm更强大,可以详细查看mach-o文件信息。mac还有一个对应的图形化工具——MachOView。

查看依赖动态库:

otool -L a.out

查看反汇编代码段:

otool -v -t a.out

objdump

display information from object files
反汇编目标文件或可执行文件。

反汇编a.out所有header信息:

objdump -x a.out

反汇编a.out所有section信息:

objdump -D a.out

intstall_name_tool

change dynamic shared library install names
这个工具用的比较少,它可以修改动态库的找寻路径。

例如cmake生成的动态库添加到工程可能存在dyld: Library not loaded 的错误,这个时候,我们先用 otool 查看一下这个动态库的路径:

otool -L  a.framework/a

得到结果:

    /Users/worthy/Desktop/a.framework/a (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.5.0)
    /usr/lib/libSystem.dylib (compatibility version 1.0.0, current version 1238.50.2)

注意上面的动态库路径是个绝对路径,动态链接器加载的时候肯定找不到动态库,我们需要用@RPATH的相对路径,需要使用install_name_tool修改:

install_name_tool -id @rpath/a.framework/a a.framework/a

相关文章

  • macOS常用二进制工具

    macOS平台下Framework开发过程中经常需要用到各种工具,下面做个总结以防遗忘。每个工具命令只举几个例子,...

  • 抓包工具-Charles

    关键词:Charles macOS 一、Charles *Charles是常用的网络封包截取工具,在做移动开...

  • Android APK 反编译工具介绍

    本篇博客主要针对 MacOs,介绍几种常用的反编译工具。 1. ApkTool APKTool 是 Google ...

  • 现今 Swift 包中的二进制目标

    文章目录 理解二进制在 Swift 中的演变 命令行工具相关 结论 在 iOS 和 macOS 开发中, Swif...

  • iOS代码静态分析工具选择

    本文对比iOS常用的几种静态分析工具,分析优缺点,并从中选出适合当前工程的工具,本文的应用系统为macOS。 cl...

  • 【iOS】二进制分析

    记录总结不常用的分析二进制数据的技巧 本文介绍使用 otool 工具进行分析二进制数据的方法,旨在快速操作,节省时...

  • MacOS环境 安装/卸载pip

    pip是常用的python包管理工具。 1、在MacOS自带的Python2.7中,easy_install.py...

  • Linux 常用命令

    文件结构 / 根目录 /bin /usr/bin 工具目录,存放二进制文件,常用命令 /boot linux启...

  • MySQL 二进制日志的使用

    本文的操作环境是 macOS Mojave 10.14.1, mysql 5.7.19 二进制日志的作用 二进制日...

  • Patternodes for Mac(矢量图形创建软件) 2.

    Patternodes for Mac是应用在MacOS上的矢量图形创建软件,是常用的动画或插图的工具,通过使用基...

网友评论

    本文标题:macOS常用二进制工具

    本文链接:https://www.haomeiwen.com/subject/fjsvtxtx.html