如何让 NDK 工具链实用程序在 Mac OS X 上列出 NDK 构建库的符号(函数名称)?
How to get NDK toolchain utilities to list symbols (function names) of NDK-built library on Mac OS X?
我有几个由 NDK 构建的库,我正在尝试查看它们的导出符号,准确地说是可用的函数名称。一个是 .so 文件,另一个是 .a 文件。我在这个问题 () 中得到了帮助,找到了我认为我需要的实用程序。它们特定于 NDK 安装。我在 OS X fyi.
在我的 NDK 安装中,我在 prebuilt/darwin-x86_64/arm-linux-androideabi/bin 中找到了 nm 和 objdump。他们的文件类型是 "Alias"。当我 运行 nm -g libMylib.so
什么都没发生——根本没有。当我 运行 objdump -TC libMylib.so
我得到:"objdump: command not found"
。然后我在 prebuilt/darwin-x86_64/bin 目录中找到了 arm-linux-androideabi-nm 和 arm-linux-androideabi-objdump 文件(文件类型在 Finder 中列为 "Unix Executable File")。尝试同时使用 结果是 "command not found"。在所有这些尝试中,我将 libMylib.so 放在了我正在尝试 运行.
的实用程序所在的文件夹中
我认为这基本上是关于如何在 unix 中调用二进制文件的一般问题;即使您在 运行 nm -g libMylib.so
时位于同一目录中,因为 .
通常不属于您的 $PATH
。要 运行 正确的,请执行 ./nm -g libMylib.so
,或者不使用 cd
先进入此目录,只需执行 path/to/your/NDK/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-nm -g libMylib.so
,或先将此目录添加到您的路径:
export PATH=path/to/your/NDK/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin:$PATH
arm-linux-androideabi-nm -g libMylib.so
(最好将此目录添加到路径中,而不是 arm-linux-androideabi
目录,因为在执行 arm-linux-androideabi-nm
时调用时很清楚要调用哪个工具,而如果您添加另一个目录并调用nm
,以$PATH
中目录的顺序为准。)
参见例如Why do you need ./ (dot-slash) before script name to run it in bash? 有关 $PATH
的更多解释。
我有几个由 NDK 构建的库,我正在尝试查看它们的导出符号,准确地说是可用的函数名称。一个是 .so 文件,另一个是 .a 文件。我在这个问题 (
在我的 NDK 安装中,我在 prebuilt/darwin-x86_64/arm-linux-androideabi/bin 中找到了 nm 和 objdump。他们的文件类型是 "Alias"。当我 运行 nm -g libMylib.so
什么都没发生——根本没有。当我 运行 objdump -TC libMylib.so
我得到:"objdump: command not found"
。然后我在 prebuilt/darwin-x86_64/bin 目录中找到了 arm-linux-androideabi-nm 和 arm-linux-androideabi-objdump 文件(文件类型在 Finder 中列为 "Unix Executable File")。尝试同时使用 结果是 "command not found"。在所有这些尝试中,我将 libMylib.so 放在了我正在尝试 运行.
我认为这基本上是关于如何在 unix 中调用二进制文件的一般问题;即使您在 运行 nm -g libMylib.so
时位于同一目录中,因为 .
通常不属于您的 $PATH
。要 运行 正确的,请执行 ./nm -g libMylib.so
,或者不使用 cd
先进入此目录,只需执行 path/to/your/NDK/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-nm -g libMylib.so
,或先将此目录添加到您的路径:
export PATH=path/to/your/NDK/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin:$PATH
arm-linux-androideabi-nm -g libMylib.so
(最好将此目录添加到路径中,而不是 arm-linux-androideabi
目录,因为在执行 arm-linux-androideabi-nm
时调用时很清楚要调用哪个工具,而如果您添加另一个目录并调用nm
,以$PATH
中目录的顺序为准。)
参见例如Why do you need ./ (dot-slash) before script name to run it in bash? 有关 $PATH
的更多解释。