Referencia indefinida a strnlen a pesar de string.h include

Referencia indefinida a strnlen a pesar de string.h include


Estoy tratando de crear un proyecto para LPC1769 en LPCXpresso. Tengo un archivo C llamando


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

a lo que me sale un error:


Undefined reference to 'strnlen'

Lo extraño es que no hay problema con strcpy, strncpy u otras funciones de cadena comunes.


Estoy construyendo para un procesador Cortex-M3
El compilador utilizado es:arm-none-eabi-gcc
En Eclipse, he marcado la opción del enlazador MCU:Sin bibliotecas de inicio o predeterminadas
Estoy ejecutando Eclipse en Ubuntu


Si bien puede ser bastante fácil eludir esto simplemente usando strlen, en realidad estoy enfrentando un problema al usar una biblioteca que usa strnlen, y no quiero meterme con la fuente de la biblioteca.


Respuestas:


El strnlen La función era (hasta hace relativamente poco) una función específica de Linux (alguna documentación, como el manual GNU libc, todavía dice que es una "extensión GNU"). La página del manual actual dice que es parte de POSIX.1-2008. Dado que está compilando de forma cruzada, es posible que la biblioteca de tiempo de ejecución de la máquina de destino no tenga esta función. Una publicación del foro de 2011 decía exactamente eso.