Bläddra i källkod

feat: build glibc from source using latest stable glibc source archive from official gnu ftp server

chiichen 4 månader sedan
förälder
incheckning
8ac8cf6022

+ 2 - 0
user/apps/glibc/.gitignore

@@ -0,0 +1,2 @@
+glibc-2.40
+glibc-2.40.tar.gz

+ 2 - 0
user/apps/glibc/Makefile

@@ -0,0 +1,2 @@
+install:
+	bash exec.sh

+ 19 - 0
user/apps/glibc/default_configure.sh

@@ -0,0 +1,19 @@
+mkdir -p build
+mkdir -p install
+if [ -z "$ARCH" ] || [ "$ARCH" != "x86_64" ] && [ "$ARCH" != "riscv64" ] &&  [ "$ARCH" != "aarch64" ]; then
+    echo "No ARCH specified, use x86_64 as default"
+    export ARCH="x86_64"
+fi
+if [ "$ARCH" == "x86_64" ] || [ "$ARCH" == "riscv64" ] ||  [ "$ARCH" == "aarch64" ]; then
+    export TRIPLET=${ARCH}-linux-gnu
+fi
+export BUILD=`uname -m`
+cd build
+../configure \
+  --prefix=/ \
+  --host=${TRIPLET} \
+  --build=${BUILD}-linux-gnu \
+  CC="${TRIPLET}-gcc -m64" \
+  CXX="${TRIPLET}-g++ -m64" \
+  CFLAGS="-O2" \
+  CXXFLAGS="-O2"

+ 17 - 0
user/apps/glibc/exec.sh

@@ -0,0 +1,17 @@
+if [ ! -f "glibc-2.40.tar.gz" ]; then
+  wget https://ftp.gnu.org/gnu/glibc/glibc-2.40.tar.gz
+fi
+if [ ! -d "glibc-2.40" ]; then
+  tar -xvf glibc-2.40.tar.gz
+  cp ./install_deps.sh ./glibc-2.40/
+  cp ./default_configure.sh ./glibc-2.40/
+fi
+cd glibc-2.40
+bash install_deps.sh
+bash default_configure.sh
+cd build
+make -j $(nproc)
+DESTDIR=$DADK_CURRENT_BUILD_DIR make install -j $(nproc)
+
+mkdir -p $DADK_CURRENT_BUILD_DIR/lib64
+cp -r $DADK_CURRENT_BUILD_DIR/lib/* $DADK_CURRENT_BUILD_DIR/lib64

+ 17 - 0
user/apps/glibc/install_deps.sh

@@ -0,0 +1,17 @@
+sudo apt-get install -y make gdb
+sudo apt-get install -y texinfo gawk bison sed
+sudo apt-get install -y python3-dev python-is-python3
+if [ -z "$ARCH" ] || [ "$ARCH" != "x86_64" ] && [ "$ARCH" != "riscv" ] &&  [ "$ARCH" != "aarch64" ]; then
+    echo "No ARCH specified, use x86_64 as default"
+    export ARCH="x86_64"
+fi
+
+if [ "$ARCH" == "riscv" ] ||  [ "$ARCH" == "aarch64" ]; then
+    export TRIPLET=${ARCH}-linux-gnu
+fi
+
+if [ "$ARCH" == "x86_64" ] ; then
+    export TRIPLET=x86-64-linux-gnu
+fi
+
+sudo apt-get install -y gcc-${TRIPLET}

+ 7 - 6
user/dadk/config/glibc-2.40.9.dadk

@@ -4,22 +4,23 @@
   "description": "glibc",
   "rust_target": null,
   "task_type": {
-    "InstallFromPrebuilt": {
-      "Archive": {
-        "url": "https://github.com/DragonOS-Community/glibc-cross/releases/download/v0.3.1/glibc-2.40.9000-x86_64-linux-gnu.tar.gz"
+    "BuildFromSource": {
+      "Local": {
+        "path": "apps/glibc"
       }
     }
   },
   "depends": [],
   "build": {
-
+    "build_command": "make install"
   },
   "install": {
     "in_dragonos_path": "/"
   },
   "clean": {
-    "clean_command": null
+    "clean_command": "cd build & make clean"
   },
   "envs": [],
-  "target_arch": ["x86_64"]
+  "build_once": true,
+  "install_once": true
 }