-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path26-gcc.sh
executable file
·87 lines (82 loc) · 3.77 KB
/
26-gcc.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/bin/bash
# QQ群:111601117、钉钉群:35948877
source `dirname ${BASH_SOURCE[0]}`/lfs.sh
# 配置LFS用户编译任务
if [ "$USER" != "lfs" ]; then
cp "$LFS_PROJECT/`basename ${BASH_SOURCE[0]}`" /home/lfs/build.sh
cp "$LFS_PROJECT/lfs.sh" /home/lfs/
cp "$LFS_PROJECT/lfs.conf" /home/lfs/
chown lfs:lfs /home/lfs/build.sh
chown lfs:lfs /home/lfs/lfs.sh
chown lfs:lfs /home/lfs/lfs.conf
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
su - lfs
[ ! -e /etc/bash.bashrc.NOUSE ] || mv -v /etc/bash.bashrc.NOUSE /etc/bash.bashrc
rm -f /home/lfs/build.sh
rm -f /home/lfs/lfs.sh
rm -f /home/lfs/lfs.conf
exit
fi
# 来自lfs用户的调用
pushd $LFS/sources/$(getConf LFS_VERSION)
PKG_NAME=gcc
PKG_PATH=$(find stage2 -maxdepth 1 -type d -name "$PKG_NAME-*")
if [ -z $PKG_PATH ]; then
tar -xpvf $(find . -maxdepth 1 -type f -name "$PKG_NAME-*.tar.*") --directory stage2
PKG_PATH=$(find stage2 -maxdepth 1 -type d -name "$PKG_NAME-*")
pushd $PKG_PATH
tar -xpvf $(find ../.. -maxdepth 1 -type f -name mpfr-*.tar.*)
mv -v $(find . -maxdepth 1 -type d -name "mpfr-*") mpfr
tar -xpvf $(find ../.. -maxdepth 1 -type f -name gmp-*.tar.*)
mv -v $(find . -maxdepth 1 -type d -name "gmp-*") gmp
tar -xpvf $(find ../.. -maxdepth 1 -type f -name mpc-*.tar.*)
mv -v $(find . -maxdepth 1 -type d -name "mpc-*") mpc
case $(uname -m) in
x86_64)
sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
;;
esac
cp -v libgcc/Makefile.in libgcc/Makefile.in.bak
cp -v libstdc++-v3/include/Makefile.in libstdc++-v3/include/Makefile.in.bak
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
-i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
echo "---确认---"
diff gcc/config/i386/t-linux64.orig gcc/config/i386/t-linux64
diff libstdc++-v3/include/Makefile.in.bak libstdc++-v3/include/Makefile.in
diff libstdc++-v3/include/Makefile.in.bak libstdc++-v3/include/Makefile.in
echo "------"
sleep 5
popd
fi
if [ ! -f $PKG_PATH/build/_BUILD_DONE ]; then
pushd $PKG_PATH
mkdir build
pushd build
../configure \
--build=$(../config.guess) \
--host=$LFS_TGT \
--target=$LFS_TGT \
LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \
--prefix=/usr \
--with-build-sysroot=$LFS \
--enable-initfini-array \
--disable-nls \
--disable-multilib \
--disable-decimal-float \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
--disable-libssp \
--disable-libvtv \
--enable-languages=c,c++
make -j$LFS_BUILD_PROC && make DESTDIR=$LFS install
if [ $? = 0 ]; then
ln -sv gcc $LFS/usr/bin/cc
touch _BUILD_DONE
else
exit 1
fi
popd
popd
fi
popd