mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-09 11:16:47 +00:00
* 修改include路径 * 添加了创建libsysapi.a和/bin/sysroot/usr/include/+lib/的代码 * 修补.gitignore * 删除多余项 * 优化脚本可读性 * 新增crt0 crti crtn * 编译binutils所需的东西 * fflush()和fprintf()的简单实现 * 应用程序启动前,调用初始化libc的函数 * 自动创建sysroot * 添加了stderr的初始化 * 修改了stderr的初始化 * 内核添加对stdio的简略处理 * 格式化代码 * 修正打开stdio文件描述符的问题 * bugfix: 修复fprintf忘记释放buf的问题 * 修复shell错误地把入口设置为main而不是_start的问题 * 新增__cxa_atexit (gcc要求libc提供这个) * 增加putchar puts * 更新写入磁盘镜像的脚本,默认无参数时,使用legacy方式安装 * 更新编译脚本 * stdio增加eof的定义 * 新增extern cplusplus * mpfr gmp mpc 构建脚本 * 更新libsysapi.a为libc.a * 加上ferror fopen fclose * 更新移植的软件的构建脚本 * 更改build_gcc_toolchain.sh中的-save参数名为-save-cache Co-authored-by: longjin <longjin@RinGoTek.cn>
52 lines
1.3 KiB
Bash
52 lines
1.3 KiB
Bash
##############################################
|
||
# DragonOS hosted gcc build script
|
||
#
|
||
# This script is used to build userland gcc for DragonOS(Running on Linux)
|
||
##############################################
|
||
|
||
# 编译前请先设置参数
|
||
sys_root=$DRAGONOS_SYSROOT
|
||
gcc_path=请填写gcc的路径
|
||
|
||
# 要安装到的目录
|
||
PREFIX=$HOME/opt/dragonos-host-userspace
|
||
|
||
|
||
if [ ! -d ${gcc_path} ]; then
|
||
echo "Error: ${gcc_path} not found"
|
||
exit 1
|
||
fi
|
||
|
||
if [ ! -d ${sysroot} ]; then
|
||
echo "Error: ${sysroot} not found"
|
||
exit 1
|
||
fi
|
||
|
||
# 安装依赖
|
||
# 注意texinfo和binutils的版本是否匹配
|
||
# 注意gmp/mpc/mpfr和gcc/g++的版本是否匹配
|
||
sudo apt-get install -y \
|
||
g++ \
|
||
gcc \
|
||
make \
|
||
texinfo \
|
||
libgmp3-dev \
|
||
libmpc-dev \
|
||
libmpfr-dev \
|
||
flex \
|
||
wget
|
||
|
||
mkdir -p build-gcc || exit 1
|
||
mkdir -p ${PREFIX} || exit 1
|
||
|
||
cd build-gcc
|
||
${gcc_path}/configure --prefix=${PREFIX} --target=x86_64-dragonos --with-sysroot=${sysroot} --disable-werror --disable-shared --disable-bootstrap --enable-languages=c,c++ || exit 1
|
||
make all-gcc all-target-libgcc -j $(nproc) || exit 1
|
||
make install-gcc install-target-libgcc -j $(nproc) || exit 1
|
||
# 这里会报错,暂时不知道为什么
|
||
# make all-target-libstdc++-v3 -j $(nproc) || exit 1
|
||
# make install-target-libstdc++-v3 -j $(nproc) || exit 1
|
||
make clean
|
||
cd ..
|
||
rm -rf build-gcc
|