我有一個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