new: 在lib下引入一个rust的helloworld! (#68)

This commit is contained in:
login 2022-10-24 21:29:58 +08:00 committed by GitHub
parent 0385e0324e
commit e002152383
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 1 deletions

View File

@ -19,6 +19,8 @@ endif
export ARCH=__x86_64__
export ROOT_PATH=$(shell pwd)
export RUSTC=$(shell which rustc)
export DEBUG=DEBUG
export GLOBAL_CFLAGS := -mcmodel=large -fno-builtin -m64 -fno-stack-protector -D $(ARCH) -D $(EMULATOR) -O1

View File

@ -1,7 +1,7 @@
CFLAGS += -I .
kernel_lib_subdirs:= libUI sys libELF
kernel_lib_subdirs:= libUI sys libELF rust_helloworld
kernel_lib_objs:= $(shell find ./*.c)

View File

@ -0,0 +1,13 @@
rust_helloworld_objs:=
ifneq ("$(RUSTC)", "")
rust_helloworld_objs += helloworld.o
endif
all: $(rust_helloworld_objs)
helloworld.o: helloworld.rs
@echo Compile helloworld.o
@echo rustc=$(which rustc)
$(shell $(RUSTC) --crate-type staticlib --target x86_64-unknown-none -o helloworld.o helloworld.rs)

View File

@ -0,0 +1,17 @@
#![no_std]
#![no_main]
use core::panic::PanicInfo;
#[no_mangle]
pub extern "C" fn rust_helloworld_a_plus_b(a: i32, b: i32) -> i32 {
return a+b;
}
/// 这个函数将在panic时被调用
#[panic_handler]
fn panic(_info: &PanicInfo) -> ! {
loop {}
}
// rustc --crate-type staticlib --target x86_64-unknown-none -o helloworld.o helloworld.rs