Я следую учебному пособию по разработке ядра на osdever , и я нахожусь на печати к экранной части учебника.Он компилируется просто отлично, без ошибок и предупреждений, но когда он идет по ссылке, я получаю:
screen.o: In function `scroll':
screen.c:(.text+0x12c): undefined reference to `memcpy'
screen.o: In function `put_str':
screen.c:(.text+0x249): undefined reference to `strlen'
У меня есть оператор включения для system.h вверху screen.c и в системе.h У меня есть
#ifndef __SYSTEM_H
#define __SYSTEM_H
extern unsigned char *memcpy(unsigned char *dest, const unsigned char *src, int count);
extern unsigned char *memset(unsigned char *dest, unsigned char val, int count);
extern unsigned short *memsetw(unsigned short *dest, unsigned short val, int count);
extern int strlen(const char *str);
extern unsigned char inportb (unsigned short _port);
extern void outportb (unsigned short _port, unsigned char _data);
extern void clear();
extern void put_char(unsigned char c);
extern void put_str(unsigned char *str);
extern void set_color(unsigned char fcol, unsigned char bcol);
extern void init_video();
#endif
Я ничего не могу найти в Интернете, и в этом уроке нет никакой помощи.Кажется, что когда я изменяю порядок в операторе компоновщика, с
/usr/local/cross/bin/i586-elf-ld -T link.ld -o kernel.bin start.o main.o screen.o
на
/usr/local/cross/bin/i586-elf-ld -T link.ld -o kernel.bin start.o screen.o main.o
я получаю
screen.o: In function `put_str':
screen.c:(.text+0x249): undefined reference to `strlen'
main.o: In function `main':
main.c:(.text+0x9b): undefined reference to `init_video'
Редактировать http://pastebin.com/ibBAVpe5 - Main.c