ndk-build编译出来的库如何看符号表
时间: 2024-03-17 15:46:40 浏览: 428
在使用 `ndk-build` 命令编译 Android NDK 代码时,可以通过设置 `APP_ABI` 参数来指定生成的目标平台架构,比如 `armeabi-v7a`、`arm64-v8a`、`x86`、`x86_64` 等。生成的库文件默认会被放置在 `libs/` 目录下,其中包括 `.a` 静态库和 `.so` 动态库两种类型。
你可以通过以下命令来查看库文件的符号表信息:
```bash
# 查看静态库的符号表信息
$ ${NDK_HOME}/toolchains/${TOOLCHAIN}/prebuilt/${OS}/bin/${TARGET}-nm -g libs/${APP_ABI}/lib<your_library>.a
# 查看动态库的符号表信息
$ ${NDK_HOME}/toolchains/${TOOLCHAIN}/prebuilt/${OS}/bin/${TARGET}-objdump -T libs/${APP_ABI}/lib<your_library>.so
```
其中 `${NDK_HOME}` 表示 Android NDK 的根目录,`${TOOLCHAIN}` 表示编译工具链名称,`${OS}` 表示编译工具链所在操作系统名称,`${TARGET}` 表示编译工具链的目标平台名称,`<your_library>` 表示你要查看符号表的库文件名称。
在输出的符号表信息中,你可以看到库文件中定义的函数和变量名称以及它们的地址、类型等信息。需要注意的是,如果库文件进行了符号表剥离操作,那么你将无法看到函数和变量名称,只能看到它们的地址和类型信息。
阅读全文