我在使用arm-gcc编译器编译的c代码中使用了string.h头文件,生成的可执行文件将在android设备上执行 . 当我将可执行文件推送到设备并执行它时,它向我显示了链接错误 . 如何在这样的设备上使用string.h中的函数?这些头文件是否特定于硬件?
ARM EABI规定,ANSI C库的头文件应由编译器独立于库所在的位置提供 . 如果您是交叉编译,则必须确保使用 string.h 来自编译器,而不是来自本机系统 . 你得到了什么联系错误?
string.h
听起来 strstr 中缺少 strstr ,听起来很奇怪,我没有解释 . 如果您可以访问设备上的库,那么我会检查例如 objdump -t ,如果它定义了 strstr .
strstr
objdump -t
如何在这样的设备上使用string.h中的函数?
它过去对我有用 .
这些头文件是硬件特定的吗?
使用NDK工具,它们是特定的架构和平台(例如,Android 8,Android 14等) .
除非NDK中存在严重错误(这似乎不太可能),否则我想你可能想再次检查你的构建 .
2 回答
ARM EABI规定,ANSI C库的头文件应由编译器独立于库所在的位置提供 . 如果您是交叉编译,则必须确保使用
string.h
来自编译器,而不是来自本机系统 . 你得到了什么联系错误?听起来
strstr
中缺少strstr
,听起来很奇怪,我没有解释 . 如果您可以访问设备上的库,那么我会检查例如objdump -t
,如果它定义了strstr
.它过去对我有用 .
使用NDK工具,它们是特定的架构和平台(例如,Android 8,Android 14等) .
除非NDK中存在严重错误(这似乎不太可能),否则我想你可能想再次检查你的构建 .