From: Minep Date: Mon, 31 Jan 2022 22:43:54 +0000 (+0000) Subject: course 0 X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/commitdiff_plain/319f5e80c7ff6032879abeb5cfdd38d9cabb2b69 course 0 --- 319f5e80c7ff6032879abeb5cfdd38d9cabb2b69 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a8b2e7a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +os-dev +slide-resources diff --git a/practice-c0/bochs-build.sh b/practice-c0/bochs-build.sh new file mode 100644 index 0000000..28b24ad --- /dev/null +++ b/practice-c0/bochs-build.sh @@ -0,0 +1,26 @@ +export CC=gcc +export CXX="g++" +export CFLAGS="-Wall -O2 -fomit-frame-pointer -pipe" +export CXXFLAGS="$CFLAGS" + +(./configure --enable-smp \ + --enable-cpu-level=6 \ + --enable-all-optimizations \ + --enable-x86-64 \ + --enable-pci \ + --enable-vmx \ + --enable-debugger \ + --enable-disasm \ + --enable-debugger-gui \ + --enable-logging \ + --enable-fpu \ + --enable-3dnow \ + --enable-sb16=dummy \ + --enable-cdrom \ + --enable-x86-debugger \ + --enable-iodebug \ + --disable-plugins \ + --disable-docbook \ + --with-x --with-x11 --with-term --with-sdl2) || exit + +make && make install diff --git a/practice-c0/gcc-build.sh b/practice-c0/gcc-build.sh new file mode 100755 index 0000000..648c5f9 --- /dev/null +++ b/practice-c0/gcc-build.sh @@ -0,0 +1,76 @@ +#! /usr/bin/bash +sudo apt update &&\ + apt install -y \ + build-essential \ + bison\ + flex\ + libgmp3-dev\ + libmpc-dev\ + libmpfr-dev\ + texinfo + +BINUTIL_VERSION=2.37 +BINUTIL_URL=https://ftp.gnu.org/gnu/binutils/binutils-2.37.tar.xz + +GCC_VERSION=11.2.0 +GCC_URL=https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz + +GCC_SRC="gcc-${GCC_VERSION}" +BINUTIL_SRC="binutils-${BINUTIL_VERSION}" + +# download gcc & binutil src code + +export PREFIX="$HOME/cross-compiler" +export TARGET=i686-elf +export PATH="$PREFIX/bin:$PATH" + +mkdir -p "${PREFIX}" +mkdir -p "${HOME}/toolchain/binutils-build" +mkdir -p "${HOME}/toolchain/gcc-build" + +cd "${HOME}/toolchain" + +if [ ! -d "${HOME}/toolchain/${GCC_SRC}" ] +then + (wget -O "${GCC_SRC}.tar" ${GCC_URL} \ + && tar -xf "${GCC_SRC}.tar") || exit + rm -f "${GCC_SRC}.tar" +else + echo "skip downloading gcc" +fi + +if [ ! -d "${HOME}/toolchain/${BINUTIL_SRC}" ] +then + (wget -O "${BINUTIL_SRC}.tar" ${BINUTIL_URL} \ + && tar -xf "${BINUTIL_SRC}.tar") || exit + rm -f "${BINUTIL_SRC}.tar" +else + echo "skip downloading binutils" +fi + +echo "Building binutils" + +cd "${HOME}/toolchain/binutils-build" + +("${HOME}/toolchain/${BINUTIL_SRC}/configure" --target=$TARGET --prefix="$PREFIX" \ + --with-sysroot --disable-nls --disable-werror) || exit + +(make && make install) || exit + +echo "Binutils build successfully!" + +echo "Building GCC" + +cd "${HOME}/toolchain/gcc-build" + +which -- "$TARGET-as" || echo "$TARGET-as is not in the PATH" + +("${HOME}/toolchain/${GCC_SRC}/configure" --target=$TARGET --prefix="$PREFIX" \ + --disable-nls --enable-languages=c,c++ --without-headers) || exit + +(make all-gcc &&\ + make all-target-libgcc &&\ + make install-gcc &&\ + make install-target-libgcc) || exit + +echo "done" diff --git a/practice-c0/slide.odp b/practice-c0/slide.odp new file mode 100644 index 0000000..25a0c81 Binary files /dev/null and b/practice-c0/slide.odp differ