mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-14 07:56:47 +00:00
🔧 修改为makefile的构建方式,程序能正常运行
This commit is contained in:
parent
cff4f4eb29
commit
f479f32102
8
.idea/customTargets.xml
generated
Normal file
8
.idea/customTargets.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CLionExternalBuildManager">
|
||||
<target id="05f63597-45c4-4a5c-9929-2668d1c24337" name="DragonOS" defaultType="TOOL">
|
||||
<configuration id="4cc3c901-337f-4624-bd4b-ae289fc31816" name="DragonOS" />
|
||||
</target>
|
||||
</component>
|
||||
</project>
|
@ -1,23 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
set(CMAKE_VERBOSE_MAKEFILE on)
|
||||
|
||||
set(DRAGONOS_ARCH "x86_64")
|
||||
|
||||
mark_as_advanced(CMAKE_INSTALL_PREFIX)
|
||||
|
||||
set(CROSS_COMPILE "${DRAGONOS_ARCH}-linux-gnu-")
|
||||
set(CMAKE_C_COMPILER "${CROSS_COMPILE}gcc")
|
||||
set(CMAKE_ASM_COMPILER "${CROSS_COMPILE}gcc")
|
||||
enable_language(ASM ASM_NASM)
|
||||
|
||||
set(CMAKE_C_FLAGS
|
||||
"-Wall -fPIC -nostdlib -nostartfiles -ffreestanding ")
|
||||
|
||||
|
||||
project(dragonOS C ASM)
|
||||
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
add_subdirectory(bootloader)
|
||||
add_subdirectory(kernel)
|
||||
include_directories(kernel)
|
||||
|
18
Makefile
Normal file
18
Makefile
Normal file
@ -0,0 +1,18 @@
|
||||
SUBDIRS = bootloader kernel
|
||||
|
||||
.PHONY: all
|
||||
all:
|
||||
@list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "make all in $$subdir";\
|
||||
cd $$subdir;\
|
||||
make all;\
|
||||
cd ..;\
|
||||
done
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Clean in dir: $$subdir";\
|
||||
cd $$subdir && make clean;\
|
||||
cd .. ;\
|
||||
done
|
@ -1,13 +0,0 @@
|
||||
set(CMAKE_ASM_NASM_SOURCE_FILE_EXTENSIONS nasm asm S)
|
||||
set(CMAKE_ASM_NASM_OBJECT_FORMAT bin)
|
||||
set(CMAKE_ASM_NASM_FLAGS "-e")
|
||||
set(CMAKE_ASM_NASM_LINK_EXECUTABLE "nasm <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||
enable_language(ASM_NASM)
|
||||
|
||||
#修改输出的路径
|
||||
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/bootloader)
|
||||
# 添加汇编包含目录(当前文件夹)
|
||||
add_compile_options(-I ${CMAKE_CURRENT_SOURCE_DIR}/ )
|
||||
|
||||
add_executable(boot.bin boot.asm)
|
||||
add_executable(loader.bin loader.asm fat12.inc)
|
11
bootloader/Makefile
Normal file
11
bootloader/Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
all: boot.bin loader.bin
|
||||
|
||||
boot.bin: boot.asm
|
||||
nasm boot.asm -o ../bin/bootloader/boot.bin
|
||||
|
||||
loader.bin: loader.asm
|
||||
nasm loader.asm -o ../bin/bootloader/lodaer.bin
|
||||
|
||||
|
||||
clean:
|
||||
rm -rf *.asm~ Makefile~
|
@ -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
19
kernel/Makefile
Normal 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 AMD’s 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
|
@ -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)
|
||||
|
@ -4,8 +4,5 @@
|
||||
|
||||
void Start_Kernel(void)
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
|
||||
};
|
||||
while(1);
|
||||
}
|
||||
|
@ -5,6 +5,12 @@ if [ ! $uid == "0" ];then
|
||||
exit
|
||||
fi
|
||||
|
||||
# 第一个参数如果是--notbuild 那就不构建,直接运行
|
||||
if [ ! "$1" == "--notbuild" ]; then
|
||||
echo "开始构建..."
|
||||
make all
|
||||
make clean
|
||||
fi
|
||||
|
||||
# ==============检查文件是否齐全================
|
||||
if [ ! -x "bin/bootloader/boot.bin" ]; then
|
||||
|
Loading…
x
Reference in New Issue
Block a user