Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何打印mach-o二进制文件从dylibs导入的所有符号?_Macos_Mach O_Otool - Fatal编程技术网

Macos 如何打印mach-o二进制文件从dylibs导入的所有符号?

Macos 如何打印mach-o二进制文件从dylibs导入的所有符号?,macos,mach-o,otool,Macos,Mach O,Otool,我是MacOS和MacOS编程新手。我想知道一个应用程序是如何工作的(只需简单地看一下二进制文件导入的系统API就可以了) 我尝试了otool,打印了帮助消息,我看到消息说-L打印了使用的共享库。然后我运行了otool-L,但它只打印了使用过的库的名称,没有任何导入的符号 也许我遗漏了otool中的某些内容,或者是否有其他工具可以帮助获取mach-o二进制文件中的导入符号?您可以使用nm-u获得导入符号的简单列表: %nm-u/bin/echo ___mb_cur_max ___stdoutp

我是MacOS和MacOS编程新手。我想知道一个应用程序是如何工作的(只需简单地看一下二进制文件导入的系统API就可以了)

我尝试了otool,打印了帮助消息,我看到消息说-L打印了使用的共享库。然后我运行了
otool-L
,但它只打印了使用过的库的名称,没有任何导入的符号


也许我遗漏了otool中的某些内容,或者是否有其他工具可以帮助获取mach-o二进制文件中的导入符号?

您可以使用
nm-u
获得导入符号的简单列表:

%nm-u/bin/echo
___mb_cur_max
___stdoutp
_错误
_出口
_弗卢什
_getenv
_mbtowc
_普查尔
_普特查尔
_strcmp
_斯特伦
dyld_stub_活页夹
有关更多详细信息,包括每个符号预期来自的库,可以使用
dyldinfo
。但这需要Xcode,并且必须作为
xcrun dyldinfo
调用。您将需要
-bind
-weak\u bind
-lazy\u bind
的联合:

%xcrun dyldinfo-bind/bin/echo
绑定信息:
段段地址类型加数动态库符号
__数据常量得到0x100004000指针0 libSystem\uuuuuuu mb\u cur\u max
__数据常数得到0x10000408指针0 libSystem
__数据常量获取0x100004010指针0 libSystem动态存根绑定器
%xcrun dyldinfo-弱绑定/bin/echo
无弱束缚
%xcrun dyldinfo-lazy_bind/bin/echo
延迟绑定信息(来自dyld info的延迟绑定部分):
段段地址索引动态库符号
__数据-符号-ptr 0x100008000x0000 libSystem错误
__数据uu la_符号u ptr 0x10000808 0x000B libSystem u退出
__数据-符号-ptr 0x10000810 0x0017 libSystem
__数据-符号-ptr 0x10000818 0x0025 libSystem\u getenv
__数据符号ptr 0x10000820 0x0033 libSystem
__数据-符号-ptr 0x10000828 0x0041 libSystem\u putchar
__数据uuu la_u符号u ptr 0x10000830 0x0050 libSystem u putwchar
__数据-符号-ptr 0x10000838 0x0060 libSystem\u strcmp
__数据符号ptr 0x10000840 0x006E libSystem

您可以使用
nm-u
获得导入符号的简单列表:

%nm-u/bin/echo
___mb_cur_max
___stdoutp
_错误
_出口
_弗卢什
_getenv
_mbtowc
_普查尔
_普特查尔
_strcmp
_斯特伦
dyld_stub_活页夹
有关更多详细信息,包括每个符号预期来自的库,可以使用
dyldinfo
。但这需要Xcode,并且必须作为
xcrun dyldinfo
调用。您将需要
-bind
-weak\u bind
-lazy\u bind
的联合:

%xcrun dyldinfo-bind/bin/echo
绑定信息:
段段地址类型加数动态库符号
__数据常量得到0x100004000指针0 libSystem\uuuuuuu mb\u cur\u max
__数据常数得到0x10000408指针0 libSystem
__数据常量获取0x100004010指针0 libSystem动态存根绑定器
%xcrun dyldinfo-弱绑定/bin/echo
无弱束缚
%xcrun dyldinfo-lazy_bind/bin/echo
延迟绑定信息(来自dyld info的延迟绑定部分):
段段地址索引动态库符号
__数据-符号-ptr 0x100008000x0000 libSystem错误
__数据uu la_符号u ptr 0x10000808 0x000B libSystem u退出
__数据-符号-ptr 0x10000810 0x0017 libSystem
__数据-符号-ptr 0x10000818 0x0025 libSystem\u getenv
__数据符号ptr 0x10000820 0x0033 libSystem
__数据-符号-ptr 0x10000828 0x0041 libSystem\u putchar
__数据uuu la_u符号u ptr 0x10000830 0x0050 libSystem u putwchar
__数据-符号-ptr 0x10000838 0x0060 libSystem\u strcmp
__数据符号ptr 0x10000840 0x006E libSystem

nm-u-m/bin/echo
可以更方便地查看此信息。@bdash感谢你们两位的帮助回答。
nm-u-m/bin/echo
可以更方便地查看此信息。@bdash感谢你们两位的帮助回答。