标签: mach-o

Mach-O 平台上的库版本控制

当目标属性的文档SOVERSION提到在 OS X 和 iOS 等 Mach-O 系统上,它对应于“兼容版本”,而VERSION对应于“当前版本”时,我正在考虑对一个小型个人项目的共享库进行版本控制”。

在 Linux 上,它只是类似 和 的东西,VERSION 5.4.2表明SOVERSION 5该库与 5.0 及更高版本兼容,并在 Windows 上VERSION用作 DLL 映像版本<major>.<minor>(我不确定SOVERSION在 Windows 上有什么区别)。

然而,文档中引用的FRAMEWORK目标属性的示例说明了您在 Mach-O 平台VERSION 16.4.0上的可能方式SOVERSION 1.0.0(我对构建框架不感兴趣,只是想知道外部版本控制方案。)

Mach-O 世界中版本控制是如何工作的?我习惯于在删除某些功能时直接升级主要版本,这将导致兼容性中断,那么版本 16.4.0 的库怎么可能仍然与库的 1.0.0 版本兼容呢?“兼容”是什么意思?

macos mach-o cmake

4
推荐指数
1
解决办法
664
查看次数

Mac OS X:估算程序的代码和静态数据大小的最佳方法是什么?

我希望能够估算出我的C++程序使用了多少代码和静态数据?

有没有办法通过查看可执行文件或目标文件来找到它?或许我可以在运行时做些什么?

otool会帮忙吗?

macos mach-o

3
推荐指数
1
解决办法
2161
查看次数

OSX的Mach-O二进制编辑器?

py-macholib在osx上无法正常工作(使用darwin端口).我没有找到任何其他选择.

有任何想法吗?

macos osx-leopard editor mach-o

3
推荐指数
1
解决办法
3114
查看次数

armot7的otool错误的方法实现地址?

我经常得到'otool'所示方法的实现地址的1字节偏移量.

例如'otool -o'给出0xe99d5,但'otool -tvV'给出:

+[NSError(SomeCategory) someMethod]:
000e99d4            b590        push    {r4, r7, lr}
000e99d6        f6441184        movw    r1, 0x4984
000e99da            af01        add     r7, sp, #4
000e99dc        f2c0010a        movt    r1, 0xa
Run Code Online (Sandbox Code Playgroud)

所以方法从0xe99d4开始.0xe99d5看起来不对,没有对齐.我相信'otool'工作正常,我不了解实施的某些方面.如何解释输出?

assembly arm mach-o objective-c otool

3
推荐指数
1
解决办法
532
查看次数

需要帮助:'错误架构'导致应用程序在iOS 7中启动时崩溃,但在iOS 8中运行良好

当我在iOS 7.1中启动它时,我的应用程序崩溃,但在iOS 8.1中运行正常

我得到的错误是这样的:

dyld:未加载库:/System/Library/Frameworks/AVKit.framework/AVKit引用自:MY APP 原因:找不到合适的图像.找到:/System/Library/Frameworks/AVKit.framework/AVKit:mach-o,但错误的架构(lldb)

我也注意到了一个类似的错误,但是UIKit提到了一些编辑而不是AVKit.

有谁知道如何解决这个问题?我正在使用Xcode 6.1.

我真的不想错过iOS 7用户只发布iOS 8.谢谢!

xcode mach-o ios7 ios8

3
推荐指数
1
解决办法
5881
查看次数

如何在程序的入口点知道ARM或Thumb模式

我正在写一个ARMv7反汇编程序.在ARM参考手册中清楚地描述了在ARM和Thumb模式之间切换的方法,但是您如何知道程序的起始模式?

我使用Xcode默认编译为拇指,所以我知道我自己的所有程序都将在Thumb中启动,除非我强制编译为ARM模式.但是,我希望能够获取一个任意的mach-o可执行文件,并在代码的开头找出指令集模式.

mach-o标题中是否有某个地方指定入口点处的指令集?

assembly arm mach-o disassembly thumb

3
推荐指数
1
解决办法
2532
查看次数

Swift Apple Mach-O链接器错误

我将我的项目从swift 3转换为swift 4并使用最新版本的xcode 9.在构建时,我收到以下错误:

Undefined symbols for architecture arm64: "__T0So22AVCapturePhotoSettingsC12AVFoundation01_abC16SwiftNativeTypesACWP", referenced from: __T06SpotMi8CameraVCC12capturePhotoyypF in CameraVC.o "__T012AVFoundation39_AVCapturePhotoSettingsSwiftNativeTypesPAAE016availablePreviewc11PixelFormatG0SaySo8NSNumberCGfg", referenced from: __T06SpotMi8CameraVCC12capturePhotoyypF in CameraVC.o ld: symbol(s) not found for architecture arm64 我没有线索.任何帮助都感激不尽.

干杯!

mach-o ios swift3 swift4 xcode9

3
推荐指数
1
解决办法
557
查看次数

如何在 Mach-O 文件中编辑加载命令并在 tvOS 上成功链接它?

假设我有一个 .a fat 库,它是为多种架构(例如 armv7、armv7s、i386、x86_64、arm64)构建的。库是为 iOS 构建的(其中包含 cmd LC_VERSION_MIN_IPHONEOS 和 6.0 版)。例如,当我运行$ otool -lv 时,我会得到带有此类加载命令的部分:

Load command 1
      cmd LC_VERSION_MIN_IPHONEOS
  cmdsize 16
  version 6.0
      sdk n/a
Run Code Online (Sandbox Code Playgroud)

我想将其替换为:

Load command 1
      cmd LC_VERSION_MIN_TVOS
  cmdsize 16
  version 9.0
      sdk n/a
Run Code Online (Sandbox Code Playgroud)

有人知道我该怎么做或可以指出一些有用的资源吗?我还能在 tvOS 上链接修改后的库吗?

xcode linker mach-o ios tvos

3
推荐指数
1
解决办法
693
查看次数

如何检查 MacOS 可执行文件 (Mach-O)?

如何查看有关 MacOS 二进制文件的一些基本信息,特别是用于构建它的内容、链接的框架以及它使用的系统调用?

我试过了nmotool -L但他们的输出只是部分有用。

例如,什么表明二进制文件是使用 xcode 或 golang 编译器构建的?

注意。我对逆向工程 macos 二进制文件不感兴趣。我只想使用已包含在 OOTB 中的工具更好地了解我的系统上运行的内容。

macos executable mach-o

3
推荐指数
1
解决办法
2468
查看次数

如何更改 c++ 文件的 mach-o 可执行文件的入口点?

我正在尝试编写一个没有 main 的 C++ 程序。是否可以将 mach-o 可执行文件的入口点更改为自定义函数(除了main())?

如果没有,那么,是否可以在main调用实际的 C 之前包装以调用我的 main 版本main

编辑:

我想我的自定义函数调用 C main。如果我给它一个构造函数属性或将它添加到 ctor 列表,那么main将被调用两次。我不希望这种情况发生。

PS 我正在 Mac OS X High Sierra 中使用 clang 版本 9.1.0 构建可执行文件

c++ mach-o clang

3
推荐指数
1
解决办法
1457
查看次数

标签 统计

mach-o ×10

macos ×4

arm ×2

assembly ×2

ios ×2

xcode ×2

c++ ×1

clang ×1

cmake ×1

disassembly ×1

editor ×1

executable ×1

ios7 ×1

ios8 ×1

linker ×1

objective-c ×1

osx-leopard ×1

otool ×1

swift3 ×1

swift4 ×1

thumb ×1

tvos ×1

xcode9 ×1