我正在尝试使用为LPC1769在LPCXpresso上创建一个项目。我有一个C文件在呼叫
#include <string.h>
int main()
{
//some stuff
strnlen(SomeString, someInt);
}我得到了一个错误:
Undefined reference to 'strnlen'奇怪的是,strcpy、strncpy或其他常见的字符串函数没有问题。
我正在构建一个Cortex-M3处理器编译器,在Eclipse中使用的是:手臂-无eabi-gcc,我已经勾选了MCU链接器选项:在Ubuntu上运行Eclipse没有启动或默认的lib。
虽然只使用strlen可以很容易地绕过这个问题,但我实际上遇到了使用使用strnlen的库的问题,而且我不想搅乱库的源代码。
发布于 2015-05-13 00:45:02
strnlen函数(直到最近)还是一个特定于Linux的函数(一些文档,比如GNU libc手册仍然说它是一个"GNU扩展“)。目前的手册页表示,它是POSIX1.2008的一部分。由于您正在交叉编译,因此目标机器的运行时库可能没有此功能。2011年的论坛发帖就是这么说的。
发布于 2017-01-06 10:15:21
我添加了同样的问题,我发现使用-std=gnu++11编译器标志解决了这个问题。
发布于 2015-05-13 00:57:03
以下内容可能适用于您(因为strnlen()不是运行时库的一部分)。
定义自己的/本地版本的strnlen()。
int strnlen(char *param, int maxlen)
{
// Perform appropriate string manipulation ... as needed.
// Return what you need.
}; https://stackoverflow.com/questions/30203551
复制相似问题