Riferimento non definito a strnlen nonostante string.h includa

Riferimento non definito a strnlen nonostante string.h includa


Sto cercando di utilizzare la creazione di un progetto per LPC1769 su LPCXpresso. Ho un file C che chiama


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

a cui ottengo un errore:


Undefined reference to 'strnlen'

La parte strana è che non ci sono problemi con strcpy, strncpy o altre comuni funzioni di stringa.


Sto costruendo per un processore Cortex-M3
Il compilatore utilizzato è:arm-none-eabi-gcc
In Eclipse, ho selezionato l'opzione del linker MCU:Nessun avvio o librerie predefinite
Sono eseguendo Eclipse su Ubuntu


Anche se può essere abbastanza facile aggirarlo semplicemente usando strlen, in realtà sto affrontando un problema usando una libreria che usa strnlen e non voglio pasticciare con il sorgente della libreria.


Risposte:


Il strnlen function era (fino a tempi abbastanza recenti) una funzione specifica per Linux (alcuni documenti come il manuale GNU libc dicono ancora che è una "estensione GNU"). L'attuale pagina di manuale dice che fa parte di POSIX.1-2008. Poiché si sta eseguendo la compilazione incrociata, è possibile che la libreria di runtime della macchina di destinazione non disponga di questa funzione. Un post sul forum del 2011 diceva proprio questo.