尽管“string.h”包括对“strnlen”的未定义引用

TSG*_*TSG 6 c eclipse gcc arm lpc

我正在尝试在 LPCXpresso 上为 LPC1769 创建一个项目。我有一个 C 文件调用

#include <string.h>
int main()
{
    //some stuff
    strnlen(SomeString, someInt);
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Undefined reference to 'strnlen'
Run Code Online (Sandbox Code Playgroud)

奇怪的是strcpy、strncpy或者其他常用的字符串函数都没有问题。

我正在为 Cortex-M3 处理器构建使用的编译器是:arm-none-eabi-gcc 在 Eclipse 中,我勾选了 MCU 链接器选项:没有启动或默认库我在 Ubuntu 上运行 Eclipse

虽然仅使用 strlen 绕过它可能很容易,但我实际上在使用使用 strnlen 的库时遇到了问题,而且我不想弄乱库源。

Tho*_*key 5

strnlen函数(直到最近)是 Linux 特定的函数(一些文档,例如 GNU libc 手册仍然说它是“GNU 扩展”)。当前的手册页说它是 POSIX.1-2008 的一部分。由于你是交叉编译,有可能目标机器的运行库没有这个功能。2011 年的一个论坛帖子就是这么说的。