mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-19 00:46:31 +00:00
Patch gcc toolchain (#111)
* 添加了GCC_cross_compile——tool_chain * - 解决环境变量路径拼接时,多了`/`的问题 - apt安装时增加-y,不需用户确认 * 解决添加环境变量的命令有误的问题 * 修正编译错误时,还会执行下一步的问题 * new: 编译完成后清理临时文件 * 更新makefile * 调整:把grub安装在 $HOME/opt/dragonos-grub下 * new: 新增dockerfile * 将镜像源换成中科大的(原因是清华的总是ban掉用于构建镜像的服务器的ip) * 修改为基于debian bullseye构建 * 取消指定版本 * 修复MBR磁盘镜像未设置启动标志的bug * 取消在docker中安装grub * 安装grub的过程改到客户机上进行 * bootstrap.sh 添加--no-docker * 使用新版的docker编译镜像 * 修补, 添加了一些关于gcc的check Co-authored-by: longjin <longjin@RinGoTek.cn>
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
|
||||
all:
|
||||
@if [ -z $$DragonOS_GCC ]; then echo "\033[31m [错误]尚未安装DragonOS交叉编译器, 请使用tools文件夹下的build_gcc_toolchain.sh脚本安装 \033[0m"; exit 1; fi
|
||||
$(MAKE) -C src all
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@ kernel_subdirs := common driver process debug filesystem time arch exception mm
|
||||
|
||||
head.o: head.S
|
||||
$(CC) -E head.S > _head.s # 预处理
|
||||
as $(ASFLAGS) -o head.o _head.s
|
||||
$(AS) $(ASFLAGS) -o head.o _head.s
|
||||
|
||||
|
||||
main.o: main.c
|
||||
@ -38,7 +38,7 @@ kernel_rust:
|
||||
all: kernel
|
||||
|
||||
@echo "Linking kernel..."
|
||||
ld -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") ../target/x86_64-unknown-none/release/libdragonos_kernel.a -T link.lds
|
||||
$(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") ../target/x86_64-unknown-none/release/libdragonos_kernel.a -T link.lds
|
||||
# 生成kallsyms
|
||||
current_dir=$(pwd)
|
||||
|
||||
@ -55,10 +55,10 @@ all: kernel
|
||||
# 重新链接
|
||||
@echo "Re-Linking kernel..."
|
||||
@echo $(shell find . -name "*.o")
|
||||
ld -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") ../target/x86_64-unknown-none/release/libdragonos_kernel.a ./debug/kallsyms.o -T link.lds
|
||||
$(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") ../target/x86_64-unknown-none/release/libdragonos_kernel.a ./debug/kallsyms.o -T link.lds
|
||||
@echo "Generating kernel ELF file..."
|
||||
# 生成内核文件
|
||||
objcopy -I elf64-x86-64 -O elf64-x86-64 -R ".comment" -R ".eh_frame" kernel ../../bin/kernel/kernel.elf
|
||||
$(OBJCOPY) -I elf64-x86-64 -O elf64-x86-64 -R ".comment" -R ".eh_frame" kernel ../../bin/kernel/kernel.elf
|
||||
@echo "Kernel Build Done."
|
||||
|
||||
ECHO:
|
||||
|
@ -6,7 +6,7 @@ all: entry.o irq.o softirq.o trap.o
|
||||
|
||||
entry.o: entry.S
|
||||
$(CC) -E entry.S > _entry.s
|
||||
as $(ASFLAGS) -o entry.o _entry.s
|
||||
$(AS) $(ASFLAGS) -o entry.o _entry.s
|
||||
|
||||
trap.o: trap.c
|
||||
$(CC) $(CFLAGS) -c trap.c -o trap.o
|
||||
|
@ -105,14 +105,14 @@ multiboot_header:
|
||||
.long CHECKSUM
|
||||
// 添加其它内容在此,详细信息见 Multiboot2 Specification version 2.0.pdf
|
||||
|
||||
// 设置帧缓冲区
|
||||
// 设置帧缓冲区(同时在这里设置qemu的分辨率, 默认为: 1440*900, 还支持: 640*480, 等)
|
||||
.align 8
|
||||
framebuffer_tag_start:
|
||||
.short MULTIBOOT_HEADER_TAG_FRAMEBUFFER
|
||||
.short MULTIBOOT_HEADER_TAG_OPTIONAL
|
||||
.long framebuffer_tag_end - framebuffer_tag_start
|
||||
.long 1440
|
||||
.long 900
|
||||
.long 1440 // 宽
|
||||
.long 900 // 高
|
||||
.long 32
|
||||
framebuffer_tag_end:
|
||||
.align 8
|
||||
@ -662,4 +662,4 @@ gdt64_pointer:
|
||||
gdt64_pointer64:
|
||||
.short gdt64_pointer-gdt64-1
|
||||
.quad gdt64
|
||||
|
||||
|
@ -13,7 +13,7 @@ $(kernel_process_objs): ECHO
|
||||
|
||||
procs.o: proc.S
|
||||
$(CC) -E proc.S > _proc.s
|
||||
as $(ASFLAGS) -o procs.o _proc.s
|
||||
$(AS) $(ASFLAGS) -o procs.o _proc.s
|
||||
|
||||
all: procs.o $(kernel_process_objs)
|
||||
|
||||
|
Reference in New Issue
Block a user