🔧 修改为makefile的构建方式,程序能正常运行

This commit is contained in:
fslongjin
2022-01-21 13:49:09 +08:00
parent cff4f4eb29
commit f479f32102
10 changed files with 63 additions and 72 deletions

View File

@ -1,18 +0,0 @@
#修改输出的路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/kernel)
# 添加汇编包含目录(当前文件夹)
add_compile_options(-I ${CMAKE_CURRENT_SOURCE_DIR}/ )
add_library(${PROJECT_NAME}-arch
head.S
main.c)
add_executable(kernel.bin
head.S main.c)
set_property(
TARGET kernel.bin
PROPERTY
DEPENDS
"link.lds"
)

19
kernel/Makefile Normal file
View File

@ -0,0 +1,19 @@
all: kernel
objcopy -I elf64-x86-64 -S -R ".eh_frame" -R ".comment" -O binary kernel ../bin/kernel/kernel.bin
kernel: head.o main.o
ld -b elf64-x86-64 -o kernel head.o main.o -T link.lds
main.o: main.c
# -fno-builtin: 不使用C语言内建函数
# The -m64 option sets int to 32bits and long and pointer to 64 bits and generates code for AMDs x86-64 architecture.
gcc -mcmodel=large -fno-builtin -m64 -c main.c
head.o: head.S
gcc -E head.S > head.s # 预处理
as --64 -o head.o head.s
clean:
rm -rf *.o *.s~ *.s *.S~ *.c~ *.h~ kernel

View File

@ -1,17 +1,3 @@
/***************************************************
* 版权声明
*
* 本操作系统名为MINE
* 该操作系统未经授权不得以盈利或非盈利为目的进行开发,
* 只允许个人学习以及公开交流使用
*
* 代码最终所有权及解释权归田宇所有;
*
* 本模块作者: 田宇
* EMail: 345538255@qq.com
*
*
***************************************************/
OUTPUT_FORMAT("elf64-x86-64","elf64-x86-64","elf64-x86-64")
OUTPUT_ARCH(i386:x86-64)

View File

@ -4,8 +4,5 @@
void Start_Kernel(void)
{
while(1)
{
};
while(1);
}