我有一个C功能如下:对未使用/定义的函数未定义的引用/任何东西?
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;
}
当与程序的其余部分相连,一个undefined reference to 'memcpy'
被抛出。 memcpy
从未在代码中使用,并且未定义。代码链接为独立,所以它不会与C库冲突。出于某种原因,链接器认为上述函数在函数调用开始时调用memcpy
,我不知道为什么。
为什么会发生这种情况?
我建议反汇编目标文件,看看'memcpy'被调用的地方。 – FamZheng