mirror of
https://github.com/cfenollosa/os-tutorial.git
synced 2024-10-27 20:34:19 +00:00
compile gcc10 & x64 environment
This commit is contained in:
parent
7aff64740e
commit
e867d6742d
@ -74,3 +74,59 @@ collisions with your system's compiler and binutils.
|
|||||||
|
|
||||||
You may want to add the `$PATH` to your `.bashrc`. From now on, on this tutorial, we will explicitly use the prefixes when using
|
You may want to add the `$PATH` to your `.bashrc`. From now on, on this tutorial, we will explicitly use the prefixes when using
|
||||||
the cross-compiled gcc.
|
the cross-compiled gcc.
|
||||||
|
|
||||||
|
|
||||||
|
how to compile the project with **GCC V 10.2.0** in x64 environments
|
||||||
|
---
|
||||||
|
|
||||||
|
add CFLAGS & LDFLAGS in Makefile
|
||||||
|
```
|
||||||
|
CFLAGS = -ffreestanding -fno-stack-protector -z execstack -m32 -no-pie -fno-pic
|
||||||
|
LDFLAGS = -melf_i386
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
the Makefile in 14-17
|
||||||
|
```
|
||||||
|
C_SOURCES = $(wildcard kernel/*.c drivers/*.c)
|
||||||
|
HEADERS = $(wildcard kernel/*.h drivers/*.h)
|
||||||
|
# Nice syntax for file extension replacement
|
||||||
|
OBJ = ${C_SOURCES:.c=.o}
|
||||||
|
|
||||||
|
|
||||||
|
CC = gcc
|
||||||
|
GDB = gdb
|
||||||
|
|
||||||
|
CFLAGS = -ffreestanding -fno-stack-protector -z execstack -m32 -no-pie -fno-pic
|
||||||
|
LDFLAGS= -melf_i386
|
||||||
|
|
||||||
|
os-image.bin: boot/bootsect.bin kernel.bin
|
||||||
|
cat $^ > os-image.bin
|
||||||
|
|
||||||
|
kernel.bin: boot/kernel_entry.o ${OBJ}
|
||||||
|
ld ${LDFLAGS} -o $@ -Ttext 0x1000 $^ --oformat binary
|
||||||
|
|
||||||
|
kernel.elf: boot/kernel_entry.o ${OBJ}
|
||||||
|
ld ${LDFLAGS} -o $@ -Ttext 0x1000 $^
|
||||||
|
|
||||||
|
run: os-image.bin
|
||||||
|
qemu-system-x86_64 -fda os-image.bin
|
||||||
|
|
||||||
|
debug: os-image.bin kernel.elf
|
||||||
|
qemu-system-x86_64 -s -S -fda os-image.bin &
|
||||||
|
${GDB} -ex "target remote localhost:1234" -ex "symbol-file kernel.elf" -ex "break *0x7c00" -ex "break main" -ex "c" -ex "c"
|
||||||
|
|
||||||
|
%.o: %.asm
|
||||||
|
nasm $< -f elf -o $@
|
||||||
|
|
||||||
|
%.o: %.c ${HEADERS}
|
||||||
|
${CC} ${CFLAGS} -c $< -o $@
|
||||||
|
|
||||||
|
%.bin: %.asm
|
||||||
|
nasm $< -f bin -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf *.bin *.dis *.o os-image.bin *.elf
|
||||||
|
rm -rf kernel/*.o boot/*.bin drivers/*.o boot/*.o
|
||||||
|
|
||||||
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user