J'ai une fonction C comme suit:Référence indéfinie à la fonction jamais utilisée/définie/n'importe quoi?
static uint32_t initrd_read(fs_node_t *node,
uint32_t offset, uint32_t size, uint8_t *buffer) {
initrd_file_header_t header = file_headers[node->inode];
if (offset > header.length)
return 0;
if (offset+size > header.length)
size = header.length-offset;
memcopy(buffer, header.offset+offset, size);
return size;
}
Quand il est relié au reste du programme, un undefined reference to 'memcpy'
est jeté. memcpy
n'est jamais utilisé dans le code et n'est pas défini. Le code est lié de manière autonome, il n'est donc pas en conflit avec une bibliothèque C. Pour une raison quelconque, l'éditeur de liens pense que la fonction ci-dessus appelle memcpy
au début de l'appel de fonction, et je ne sais pas pourquoi.
Pourquoi cela est-il possible?
Je suggère de désassembler le fichier cible et voir où 'memcpy' est appelé. – FamZheng