次のような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;
}
プログラムの残りの部分とリンクすると、 anundefined reference to 'memcpy'
がスローされます。memcpy
はコードで使用されておらず、定義されていません。コードは独立してリンクされているため、C ライブラリと競合しません。何らかの理由で、リンカーは上記の関数がmemcpy
関数呼び出しの最初に呼び出されていると考えていますが、その理由はわかりません。
なぜこれが起こっているのでしょうか?