微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为已经在 OSX 中编译的二进制文件编写头文件?

如何解决如何为已经在 OSX 中编译的二进制文件编写头文件?

如果我缺少 .dylib/.a/.so 文件的头文件,有没有办法找出我可以链接函数,然后自己编写头文件

我问的是 OSX,因为用于对象检查的工具略有不同。

解决方法

使用 otool 相当简单。

https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CodeFootprint/Articles/MachOOverview.html#:~:text=Mach%2DO%20is%20the%20native,file%20are%20read%20into%20memory

它是 MachO 二进制文件的 __text 部分,用于保存可链接的代码。

这样就可以像这样在 OSX 中以二进制形式打印出所有函数。

otool -t libpython3.8.a -v

使用 -t 表示 __text 部分,使用 -v 进行反汇编。

会输出类似的东西

__PyDict_Pop:
0000000000003300    pushq   %rbp
0000000000003301    movq    %rsp,%rbp
... assembly ...
... ret value...
0000000000004614    popq    %rbp
0000000000004615    retq
0000000000004616    nopw    %cs:(%rax,%rax)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。