Browse Source

There is no problem to create hello.mo with default compiler on
Debian-9.5/amd64.

But building hello.mo with i386-elf-gcc (5.5.0) cross compiler on
OpenBSD-6.3/amd64, undefined reference to 'rt_kprintf' error occurs.

To avoid this error, "compile and link" process needs to be divided to
simply "compile" and "link".

On Debian-9.5, both previous and current method produces same hello.mo.

We have to improve disk image creation (Linux dependent),
this is a future homework.

SASANO Takayoshi 6 years ago
parent
commit
86742879f3
1 changed files with 3 additions and 2 deletions
  1. 3 2
      bsp/x86/Makefile

+ 3 - 2
bsp/x86/Makefile

@@ -7,7 +7,7 @@ all: rtthread rtsym exe dll floppy.img
 	@sudo mount -t vfat floppy.img tmp -o loop
 	@sudo cp -fv rtthread.elf tmp/boot/oskernel
 	@sudo rm tmp/bin/* -fr
-	@sudo cp out/* tmp/bin/ -fv
+	@sudo cp out/*.mo tmp/bin/ -fv
 	@sudo umount tmp
 
 rtthread:
@@ -23,7 +23,8 @@ out:
 	mkdir -p out
 
 dll: obj out
-	$(CC) -shared -s -fPIC -e main -Isrc src/hello.c -o out/hello.mo
+	$(CC) -c -fPIC -Isrc src/hello.c -o out/hello.o
+	$(CC) -s -Wl,-shared,-melf_i386,--entry=main -o out/hello.mo out/hello.o
 
 disasm: obj out
 	$(CC) -shared -S -fPIC -Isrc src/hello.c -o obj/hello.s