feat: 支持动态链接 (#910)

* feat: 支持动态链接

Authored-By: chiichen <chiichen@qq.com>
Co-authored-by: longjin <longjin@DragonOS.org>
Signed-off-by: longjin <longjin@DragonOS.org>

* build: 更新构建容器版本至v1.12并指定DADK安装版本

- 将BUILD_CONTAINER_VERSION从v1.11升级到v1.12
- 修改bootstrap.sh和user/Makefile中DADK的安装方式,明确指定版本v0.4.0

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@dragonos.org>
Co-authored-by: chiichen <chiichen@qq.com>
Co-authored-by: longjin <longjin@dragonos.org>
Co-authored-by: Jomo <xuzihao@dragonos.org>
Co-authored-by: MemoryShore <1353318529@qq.com>
This commit is contained in:
chiichen
2025-05-19 14:29:55 +08:00
committed by GitHub
parent b322121dd9
commit fccfa6f7ff
33 changed files with 477 additions and 273 deletions

View File

@ -2,7 +2,7 @@ user_sub_dirs = apps
DADK_VERSION=$(shell dadk -V | awk 'END {print $$2}')
# 最小的DADK版本
MIN_DADK_VERSION = 0.3.0
MIN_DADK_VERSION = 0.4.0
DADK_CACHE_DIR = $(ROOT_PATH)/bin/dadk_cache
ECHO:
@ -20,7 +20,7 @@ ifeq ("$(DADK_VERSION)", "")
@echo "\n\tcargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag v$(MIN_DADK_VERSION)" --locked
@echo "\n"
@echo "Auto installing dadk..."
cargo install dadk
cargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag v$(MIN_DADK_VERSION)" --locked
else
# 如果DADK版本过低则自动更新
@echo "dadk version $(DADK_VERSION) installed"

View File

@ -10,7 +10,7 @@ else
endif
ifeq ($(ARCH), x86_64)
export RUST_TARGET=x86_64-unknown-linux-musl
export RUST_TARGET=x86_64-unknown-linux-gnu
else ifeq ($(ARCH), riscv64)
export RUST_TARGET=riscv64gc-unknown-linux-gnu
else

View File

@ -1,5 +1,5 @@
ifeq ($(ARCH), x86_64)
CROSS_COMPILE=x86_64-linux-musl-
CROSS_COMPILE=x86_64-linux-gnu-
else ifeq ($(ARCH), riscv64)
CROSS_COMPILE=riscv64-linux-musl-
endif
@ -8,7 +8,7 @@ CC=$(CROSS_COMPILE)gcc
.PHONY: all
all: main.c
$(CC) -static -o test_fstat main.c
$(CC) -o test_fstat main.c
.PHONY: install clean
install: all

View File

@ -1,5 +1,5 @@
ifeq ($(ARCH), x86_64)
CROSS_COMPILE=x86_64-linux-musl-
CROSS_COMPILE=x86_64-linux-gnu-
else ifeq ($(ARCH), riscv64)
CROSS_COMPILE=riscv64-linux-musl-
endif
@ -8,7 +8,7 @@ CC=$(CROSS_COMPILE)gcc
.PHONY: all
all: main.c
$(CC) -static -o test_newfstatat main.c
$(CC) -o test_newfstatat main.c
.PHONY: install clean
install: all

View File

@ -22,6 +22,10 @@ type = "build-from-source"
source = "archive"
# 路径或URL
source-path = "https://mirrors.dragonos.org.cn/pub/third_party/gnu/coreutils/coreutils-9.4.tar.xz"
# 把压缩包中的哪个目录作为根目录(可选),仅当 source = "archive" 时生效
archive-rootdir = "coreutils-9.4"
# 构建相关信息
[build]
# (可选)构建命令

View File

@ -0,0 +1,40 @@
# 用户程序名称
name = "glibc_bin_ubuntu2404"
# 版本号
version = "2.39"
# 用户程序描述信息
description = "GNU C Library for Ubuntu 24.04"
# (可选)默认: false 是否只构建一次如果为trueDADK会在构建成功后将构建结果缓存起来下次构建时直接使用缓存的构建结果
build-once = false
# (可选) 默认: false 是否只安装一次如果为trueDADK会在安装成功后不再重复安装
install-once = false
# 目标架构
# 可选值:"x86_64", "aarch64", "riscv64", "loongarch64"
target-arch = ["x86_64"]
# 任务源
[task-source]
# 构建类型
# 可选值:"build-from-source", "install-from-prebuilt"
type = "install-from-prebuilt"
# 构建来源
# "build_from_source" 可选值:"git", "local", "archive"
# "install_from_prebuilt" 可选值:"local", "archive"
source = "archive"
# 路径或URL
source-path = "https://mirrors.dragonos.org.cn/pub/third_party/gnu/glibc-bin/glibc-ubuntu2404-x86_64-202505111756-8f3207567bf10f4d09027b2cd84b7807.tar.xz"
archive-rootdir = "sysroot/"
[build]
# 安装相关信息
[install]
# 可选安装到DragonOS的路径
in-dragonos-path = "/"
# 清除相关信息
[clean]
# (可选)清除命令
clean-command = ""
# (可选)依赖项
# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]]
# (可选)环境变量
# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]]

View File

@ -22,10 +22,13 @@ type = "build-from-source"
source = "archive"
# 路径或URL
source-path = "https://mirrors.dragonos.org.cn/pub/third_party/musl/musl-1.2.4.tar.gz"
# 把压缩包中的哪个目录作为根目录(可选),仅当 source = "archive" 时生效
archive-rootdir = "musl-1.2.4"
# 构建相关信息
[build]
# (可选)构建命令
build-command = "touch config.mak && DESTDIR=$DADK_CURRENT_BUILD_DIR make install -j $(nproc)"
build-command = "touch config.mak && DESTDIR=$DADK_CURRENT_BUILD_DIR make install -j $(nproc) && rm -rf $DADK_CURRENT_BUILD_DIR/lib && rm -rf $DADK_CURRENT_BUILD_DIR/lib64"
# 安装相关信息
[install]
# 可选安装到DragonOS的路径

View File

@ -7,4 +7,5 @@ ExecStart=/bin/NovaShell
Restart=always
ExecStartPre=-/bin/about.elf
ExecStartPre=/bin/busybox stty erase 127
Environment=PATH=/bin:/usr/bin:/usr/local/bin
Environment=PATH=/bin:/usr/bin:/usr/local/bin
Environment=LD_LIBRARY_PATH=/usr/lib:/usr/lib64:/usr/local/lib