2

我在 ac 代码中使用了 string.h 头文件,该头文件将使用 arm-gcc 编译器进行编译,生成的可执行文件将在 android 设备上执行。当我将我的可执行文件推送到设备上并执行它时,它出现了链接错误。如何在这样的设备上使用 string.h 中的函数?这些头文件是硬件特定的吗?

4

2 回答 2

1

ARM EABI 声明 ANSI C 库的头文件应由编译器提供,与库的来源无关。但是,如果您要进行交叉编译,则必须确保使用string.h编译器附带的版本,而不是来自本机系统。你得到什么链接错误?

听起来好像strstr缺少libc,这听起来很奇怪,我对此没有任何解释。如果您可以访问设备上的库,那么我会检查objdump -t它是否定义了strstr.

于 2013-05-28T18:21:20.270 回答
0

如何在这样的设备上使用 string.h 中的函数?

过去它对我有用。

这些头文件是硬件特定的吗?

使用 NDK 工具,它们是特定于架构和平台(例如,Android 8、Android 14 等)的。

除非 NDK 中存在严重错误(这似乎不太可能),否则我认为您可能需要再次检查您的构建。

于 2013-05-28T19:28:10.327 回答