[Memo] Run Node.js v4.4.5 on CentOS 4.9 / RHEL4 (i386) for the time being (gcc-4.8 and glibc2.11 on LinuxKernel 2.6.9)

--Kanji like this
Nodev445onCent4.png

```shell-session

[mt08@centos4 node-v4.4.5]$ uname -a Linux centos4.local 2.6.9-103.ELsmp #1 SMP Fri Dec 9 04:31:51 EST 2011 i686 i686 i386 GNU/Linux [mt08@centos4 node-v4.4.5]$ PATH=HOME/482/usr/bin:PATH node

console.log('Hello Node.js!') Hello Node.js! undefined [mt08@centos4 node-v4.4.5]$ PATH=HOME/482/usr/bin:PATH node -v v4.4.5 [mt08@centos4 node-v4.4.5]$


## Purpose
 Move recent nodejs on a sieving Linux system. <br> (Isn't the rental server, RHEL4 series, etc. still active ??)

 --Reference
 -[RHEL](https://ja.wikipedia.org/wiki/Red_Hat_Enterprise_Linux) 4 First Edition: February 15, 2005 --Support: -January 30, 2014 (extended)
 -[CentOS](https://ja.wikipedia.org/wiki/CentOS) 4 First Edition: March 9, 2005 Maintenance Update: -February 29, 2012

 -(Planned) I will upload the binary soon. Like github ??
 
## Overview
 --Build Node.js v4.4.5 with [on CentOS 4.9](http://qiita.com/mt08/items/708dbd29eb8a25587100).
 <br> But the tools are old and angry, so I'll start from there.
    - Python 2.3.4 => 2.7.12
    - make 3.80 => make 4.21
    - binutils 2.15.92 => 2.24
    - gcc 3.4.6 => 4.8.2
 --glibc 2.3 => 2.11.3 (If it is too new, it will be repelled by the Linux Kernel version)
 --The one generated by gcc (4.8.2) created here uses `/ tools / lib` etc. with <font color ='red'> * fixed * </ font> (`# define STANDARD_STARTFILE_PREFIX_1 "/ tools / lib /" `like)

- Express HelloWorld!

    ```bash
export PATH=$HOME/482/usr/bin:/tools/bin:$HOME/usr/bin:$PATH
mkdir myapp
cd myapp
#
#
    cat > package.json <<EOF
    {
      "name": "helloworld",
      "version": "1.0.0",
      "description": "Hello World!",
      "main": "app.js",
      "scripts": {
      "start": "node app.js"
      },
      "keywords": [
        "HelloWorld"
      ],
      "author": "mt08",
      "license": "MIT",
      "dependencies": {
        "express": "^4.14.0"
      }
}
EOF
#
npm install
cat > app.js <<EOF
var express = require('express');
var app = express();
app.get('/', function (req, res) {
      res.send('Hello World!');
});
app.listen(3000, function () {
      console.log('Example app listening on port 3000!');
});
EOF
#
#
uname -a
npm start
[mt08@centos4 myapp]$ npm install ffi
/
> [email protected] install /home/mt08/myapp/node_modules/ffi/node_modules/ref
> node-gyp rebuild

make: Entering directory '/home/mt08/myapp/node_modules/ffi/node_modules/ref/build'
  CXX(target) Release/obj.target/binding/src/binding.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Leaving directory '/home/mt08/myapp/node_modules/ffi/node_modules/ref/build'

> [email protected] install /home/mt08/myapp/node_modules/ffi
> node-gyp rebuild

make: Entering directory '/home/mt08/myapp/node_modules/ffi/build'
  CC(target) Release/obj.target/ffi/deps/libffi/src/prep_cif.o
  CC(target) Release/obj.target/ffi/deps/libffi/src/types.o
  CC(target) Release/obj.target/ffi/deps/libffi/src/raw_api.o
  CC(target) Release/obj.target/ffi/deps/libffi/src/java_raw_api.o
  CC(target) Release/obj.target/ffi/deps/libffi/src/closures.o
  CC(target) Release/obj.target/ffi/deps/libffi/src/x86/ffi.o
  CC(target) Release/obj.target/ffi/deps/libffi/src/x86/ffi64.o
  CC(target) Release/obj.target/ffi/deps/libffi/src/x86/unix64.o
  CC(target) Release/obj.target/ffi/deps/libffi/src/x86/sysv.o
  AR(target) Release/obj.target/deps/libffi/libffi.a
  COPY Release/libffi.a
  CXX(target) Release/obj.target/ffi_bindings/src/ffi.o
  CXX(target) Release/obj.target/ffi_bindings/src/callback_info.o
  CXX(target) Release/obj.target/ffi_bindings/src/threaded_callback_invokation.o
  SOLINK_MODULE(target) Release/obj.target/ffi_bindings.node
  COPY Release/ffi_bindings.node
make: Leaving directory '/home/mt08/myapp/node_modules/ffi/build'
[email protected] node_modules/ffi
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected]
└── [email protected]
[mt08@centos4 myapp]$ node
> var ffi = require('ffi')
undefined
> var math = ffi.Library('libm', {
...    'sqrt': [ 'double', [ 'double'] ],
...    'sin': [ 'double', [ 'double'] ],
... });
undefined
> math.sqrt(2)
1.4142135623730951
> math.sin(Math.PI/2)
1
> math.sin(Math.PI/6)
0.49999999999999994
> 

Build environment

CentOS 4.9

--Refer to this-> [Note] Install CentOS 4.x on VMWare (now ..) --Install with'linux text' --No Firewall, SELinux --The package is custom and all are unchecked. --Install the build tool.

```bash

sudo yum install yum-utils sudo yum groupinstall "Development Tools"



## procedure

### folder
 `~ / work`: working folder
 `~ / usr`: installation folder (built with gcc-3.4.6)
 `~ / 482 / usr`: installation folder (built with gcc-4.8.2)

### Preparation

PATH=HOME/usr/bin:PATH export DIR_WORK=HOME/work export DIR_INST=HOME/usr export DIR_INST_482=$HOME/482/usr

export MAKEFLAGS='-j 4'

#For the time being~/work folder cd mkdir -p ${DIR_WORK} ${DIR_INST_482} cd ${DIR_WORK}


 Python `2.7.12`

python 2.7.12

cd {DIR_WORK} PYTHON_VERSION=2.7.12 wget https://www.python.org/ftp/python/{PYTHON_VERSION}/Python-{PYTHON_VERSION}.tgz --no-check-certificate tar zxf ./Python-{PYTHON_VERSION}.tgz cd Python-{PYTHON_VERSION} time { date > build.log ; \ ./configure --prefix={DIR_INST} 2>&1 | tee -a ./build.log ;
date > build.log ;
make 2>&1 | tee -a ./build.log ; date >> ./build.log ; }

#sudo porg -lp python-${PYTHON_VERSION} -E /home "make install" make install


```shell-session
real    1m2.273s
user    1m20.189s
sys    0m15.742s
.
.

[mt08@centos4 Python-2.7.11]$ python -V
Python 2.3.4
[mt08@centos4 Python-2.7.11]$ type python
python is hashed (/usr/bin/python)
[mt08@centos4 Python-2.7.11]$ hash -r
[mt08@centos4 Python-2.7.11]$ python -V
Python 2.7.11
[mt08@centos4 Python-2.7.11]$ type python
python is hashed (/home/mt08/usr/bin/python)
[mt08@centos4 Python-2.7.11]$

make 4.2.1

## make-4.2.1
cd ${DIR_WORK}
MAKE_VERSION=4.2.1
wget https://ftp.gnu.org/gnu/make/make-${MAKE_VERSION}.tar.bz2 --no-check-certificate
tar jxf make-${MAKE_VERSION}.tar.bz2
mkdir build-make
cd build-make
time { date > build.log ; \
     ../make-${MAKE_VERSION}/configure --prefix=${DIR_INST} 2>&1 | tee -a ./build.log ; \
    date > build.log ; \
    make 2>&1 | tee -a ./build.log ;
    date >> ./build.log ; } 

#sudo porg -lp make-${MAKE_VERSION} "make install"
make install
real	0m7.476s
user	0m7.611s
sys	0m3.594s
.
.
[mt08@centos4 build-make]$ make -v
GNU Make 3.80
Copyright (C) 2002  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
[mt08@centos4 build-make]$ hash -r 
[mt08@centos4 build-make]$ make -v
GNU Make 4.2.1
Built for i686-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[mt08@centos4 build-make]$ 

Install gcc-4.8.2 and glibc-2.11.3 with [Install gcc-4.8.2 environment](http: //) in ↓

Make a symbolic link

sudo -u lfs ln -sf /tools/include/elf.h /tools/include/linux/auxvec.h

Node.js (v4.4.5)

#gcc-4.8.2 PATH added.
PATH=/tools/bin:$HOME/usr/bin:$PATH
#
#
cd ${DIR_WORK}
wget https://nodejs.org/dist/latest-v4.x/node-v4.4.5.tar.gz --no-check-certificate
tar zxf ./node-v4.4.5.tar.gz
cd node-v4.4.5
#
#
time { date > build.log ; \
     ./configure --prefix=${DIR_INST_482} 2>&1 | tee -a ./build.log ; \
    date > build.log ; \
    CC=/tools/bin/i686-pc-linux-gnu-gcc make 2>&1 | tee -a ./build.log ;
    date >> ./build.log ; }
#
#
CC=/tools/bin/i686-pc-linux-gnu-gcc make install

vi $HOME/482/usr/bin/npm Rewrite the first line: #!/usr/bin/env node

--Log

```shell-session

g++ -pthread -rdynamic -m32 -Wl,--whole-archive /home/mt08/work/node-v4.4.5/out/Release/libopenssl.a -Wl,--no-whole-archive -Wl,-z,noexecstack -Wl,--whole-archive /home/mt08/work/node-v4.4.5/out/Release/ . . . bbase.a /home/mt08/work/node-v4.4.5/out/Release/obj.target/deps/v8/tools/gyp/libv8_snapshot.a -Wl,--end-group -ldl -lrt -lm make[1]: Leaving directory '/home/mt08/work/node-v4.4.5/out' ln -fs out/Release/node node real 1m33.848s user 19m33.633s sys 1m23.548s [mt08@centos4 node-v4.4.5]$



- - -
## Installation of gcc-4.8.2 environment
 Follow LFS version 7.5 (for GCC-4.8.2 and glibc-2.11.3)
- http://lfsbookja.osdn.jp/7.5.ja/index.html
- http://www.linuxfromscratch.org/lfs/view/7.5/

 --Following LFS (Linux From Scratch), continue to add.
 --But the new glibc doesn't support kernel 2.6.9, so use around 2.11.3.

### Ready to build

```bash
# root
su - 
#
# LFS folders
export LFS=/mnt/lfs 
mkdir -vp $LFS/tools
ln -sv $LFS/tools /
#
# lfs - user
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
chown -v lfs $LFS/tools
# password for lfs
passwd lfs
#
# Switch user to lfs
su - lfs
#
# .bash* settings
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
#
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
DIR_DEVTOOLS=/tools
PATH=${DIR_DEVTOOLS}/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
export MAKEFLAGS='-j 4'
EOF
##
source ~/.bash_profile
#
# 

Binutils-2.24 - Pass 1

export BINUTIL_VER=2.24
wget https://ftp.gnu.org/gnu/binutils/binutils-${BINUTIL_VER}.tar.bz2 --no-check-certificate
tar jxf binutils-${BINUTIL_VER}.tar.bz2
mkdir -v ./binutils-build
cd ./binutils-build
time { date > build.log ; \
../binutils-${BINUTIL_VER}/configure     \
    --prefix=${DIR_DEVTOOLS}            \
    --with-sysroot=$LFS        \
    --with-lib-path=${DIR_DEVTOOLS}/lib \
    --target=$LFS_TGT          \
    --disable-nls              \
    --disable-werror 2>&1 | tee -a ./build.log ; \
    date > build.log ; \
    make 2>&1 | tee -a ./build.log ;
    date >> ./build.log ; } 
make install
real    0m37.774s
user    1m10.186s
sys    0m27.170s
.
.
lfs:~/binutils-build$ ${DIR_DEVTOOLS}/bin/i686-lfs-linux-gnu-as --version
GNU assembler (GNU Binutils) 2.24
Copyright 2013 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `i686-lfs-linux-gnu'.
lfs:~/binutils-build$

GCC-4.8.2 - Pass 1

##
cd
export GCC_VER=4.8.2
wget --no-check-certificate http://www.netgull.com/gcc/releases/gcc-${GCC_VER}/gcc-${GCC_VER}.tar.bz2
wget --no-check-certificate https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.bz2
wget --no-check-certificate https://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.bz2
wget --no-check-certificate https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
#
tar jxf gcc-${GCC_VER}.tar.bz2
cd gcc-${GCC_VER}
tar jxf ../mpfr-3.1.4.tar.bz2 ; mv mpfr-3.1.4 mpfr
tar jxf ../gmp-5.1.3.tar.bz2 ; mv gmp-5.1.3 gmp
tar zxf ../mpc-1.0.3.tar.gz ; mv mpc-1.0.3 mpc
#
# Patch
for file in \
 $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
  cp -uv $file{,.orig}
  sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
      -e 's@/usr@/tools@g' $file.orig > $file
  echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
  touch $file.orig
done
#
sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
#
## ./contrib/download_prerequisites
#
mkdir -v ../gcc-build
cd ../gcc-build
##
##
##
time { date > build.log ; \
../gcc-${GCC_VER}/configure                               \
    --target=$LFS_TGT                                \
    --prefix=${DIR_DEVTOOLS}                         \
    --with-sysroot=$LFS                              \
    --with-newlib                                    \
    --without-headers                                \
    --with-local-prefix=${DIR_DEVTOOLS}              \
    --with-native-system-header-dir=${DIR_DEVTOOLS}/include   \
    --disable-nls                                    \
    --disable-shared                                 \
    --disable-multilib                               \
    --disable-decimal-float                          \
    --disable-threads                                \
    --disable-libatomic                              \
    --disable-libgomp                                \
    --disable-libitm                                 \
    --disable-libmudflap                             \
    --disable-libquadmath                            \
    --disable-libsanitizer                           \
    --disable-libssp                                 \
    --disable-libstdc++-v3                           \
    --enable-languages=c,c++                         \
    --with-mpfr-include=$(pwd)/../gcc-${GCC_VER}/mpfr/src \
    --with-mpfr-lib=$(pwd)/mpfr/src/.libs 2>&1 | tee -a ./build.log ; \
    date > build.log ; \
    make 2>&1 | tee -a ./build.log ;
    date >> ./build.log ; } 

--Installation

make install
ln -sv libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/'`
real    1m43.495s
user    9m47.849s
sys     1m35.760s
.
.
.
lfs:~/gcc-build$ ${DIR_DEVTOOLS}/bin/i686-lfs-linux-gnu-gcc --version
i686-lfs-linux-gnu-gcc (GCC) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

This is skipped-Linux Kernel Source

### root
su -
#
#
#
### Linux-Kernel
cd 
mkdir -p dev/kernel
cd dev/kernel
#Source download
yumdownloader --source kernel
# => CentOS 4.9:: kernel-2.6.9-103.EL.src.rpm 
sudo yum-builddep ./kernel-2.6.9-103.EL.src.rpm
##Source decompression, build
echo '%_topdir %(echo $HOME)/dev/kernel/rpmbuild' > ~/.rpmmacros
mkdir -p ./rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
rpm -i ./kernel-2.6.9-103.EL.src.rpm
cd rpmbuild/SPECS/
rpmbuild -bp --target=`uname -m` kernel-2.6.spec
cd ../BUILD/kernel-2.6.9/linux-2.6.9/
mv .config .config.org
cp /boot/config-`uname -r` ./.config
[root@centos4 linux-2.6.9]# pwd
/root/dev/kernel/rpmbuild/BUILD/kernel-2.6.9/linux-2.6.9

glibc --From glibc-2.20, Kernel 2.6.32 or later (* The minimum Linux kernel version that this version of the GNU C Library) can be used with is 2.6.32.) --From glibc-2.17, Kernel 2.6.16 or later ( When working with Linux kernels, this version of the GNU C Library requires Linux kernel version 2.6.16 or later. *) ―― ?? Can glibc-2.16.0 be used with kernel-2.6.9 ??

```bash`

cd mkdir -p ${DIR_DEVTOOLS}/include cp -rv /usr/include/* ${DIR_DEVTOOLS}/include

cat > glibc-2.11.3.patch << EOF diff -uprN glibc-2.11.3.orig/nptl/sysdeps/pthread/pt-initfini.c glibc-2.11.3/nptl/sysdeps/pthread/pt-initfini.c --- glibc-2.11.3.orig/nptl/sysdeps/pthread/pt-initfini.c 2010-11-29 18:24:32.000000000 -0800 +++ glibc-2.11.3/nptl/sysdeps/pthread/pt-initfini.c 2016-06-23 12:47:41.000000000 -0700 @@ -45,6 +45,11 @@ /* Embed an #include to pull in the alignment and .end directives. */ asm ("\n#include "defs.h"");

+asm ("\n#if defined __i686 && defined ASSEMBLER"); +asm ("\n#undef __i686"); +asm ("\n#define __i686 __i686"); +asm ("\n#endif"); + /* The initial common code ends here. / asm ("\n/@HEADER_ENDS*/");

diff -uprN glibc-2.11.3.orig/sysdeps/unix/sysv/linux/i386/sysdep.h glibc-2.11.3/sysdeps/unix/sysv/linux/i386/sysdep.h --- glibc-2.11.3.orig/sysdeps/unix/sysv/linux/i386/sysdep.h 2010-11-29 18:24:32.000000000 -0800 +++ glibc-2.11.3/sysdeps/unix/sysv/linux/i386/sysdep.h 2016-06-23 12:46:59.000000000 -0700 @@ -29,6 +29,10 @@ #include <dl-sysdep.h> #include <tls.h>

+#if defined __i686 && defined ASSEMBLER +#undef __i686 +#define __i686 __i686 +#endif

/* For Linux we can use the system call table in the header file /usr/include/asm/unistd.h EOF

export GLIBC_VER=2.11.3 wget http://gnu.mirror.constant.com/libc/glibc-{GLIBC_VER}.tar.bz2 --no-check-certificate tar jxf glibc-{GLIBC_VER}.tar.bz2 cd glibc-${GLIBC_VER} patch -p1 < ../glibc-2.11.3.patch mkdir -v ../glibc-build cd ../glibc-build

time { date > build.log ;
../glibc-{GLIBC_VER}/configure \ --prefix={DIR_DEVTOOLS}
--host=LFS_TGT \ --build=(../glibc-{GLIBC_VER}/scripts/config.guess) \ --disable-profile \ --with-headers={DIR_DEVTOOLS}/include
libc_cv_forced_unwind=yes
libc_cv_ctors_header=yes
libc_cv_c_cleanup=yes 2>&1 | tee -a ./build.log ;
date > build.log ;
make PARALLELMFLAGS=-j4 2>&1 | tee -a ./build.log ; date >> ./build.log ; }


make install


```shell-session
real	2m25.898s
user	9m52.092s
sys	1m57.351s
...
...
lfs:~/glibc-build$ ${DIR_DEVTOOLS}/lib/libc.so.6 
GNU C Library stable release version 2.11.3, by Roland McGrath et al.
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.8.2.
Compiled on a Linux 2.4.20 system on 2016-06-23.
Available extensions:
	crypt add-on version 2.1 by Michael Glad and others
	GNU Libidn by Simon Josefsson
	Native POSIX Threads Library by Ulrich Drepper et al
	BIND-8.2.3-T5B
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

Libstdc++

#
cd 
#
rm -rf gcc-${GCC_VER}
tar jxf gcc-${GCC_VER}.tar.bz2
cd gcc-${GCC_VER}
tar jxf ../mpfr-3.1.4.tar.bz2 ; mv mpfr-3.1.4 mpfr
tar jxf ../gmp-5.1.3.tar.bz2 ; mv gmp-5.1.3 gmp
tar zxf ../mpc-1.0.3.tar.gz ; mv mpc-1.0.3 mpc
#
cd
mkdir -pv ./gcc-build-libstcpp
cd ./gcc-build-libstcpp
#
#
#
time { date > build.log ; \
../gcc-${GCC_VER}/libstdc++-v3/configure \
    --host=$LFS_TGT                 \
    --prefix=${DIR_DEVTOOLS}        \
    --disable-multilib              \
    --disable-shared                \
    --disable-nls                   \
    --disable-libstdcxx-threads     \
    --disable-libstdcxx-pch         \
    --with-gxx-include-dir=${DIR_DEVTOOLS}/$LFS_TGT/include/c++/${GCC_VER} 2>&1 | tee -a ./build.log ; \
    date > build.log ; \
    make -j 4 2>&1 | tee -a ./build.log ;
    date >> ./build.log ; } 
#
#
make install
real	0m25.237s
user	0m36.341s
sys	0m13.510s

Binutils-2.24 - Pass 2

#
export BINUTIL_VER=2.24
cd
#
mkdir -v ./binutils-build2
cd ./binutils-build2
#
time { date > build.log ; \
CC=$LFS_TGT-gcc                \
AR=$LFS_TGT-ar                 \
RANLIB=$LFS_TGT-ranlib         \
../binutils-${BINUTIL_VER}/configure     \
    --prefix=${DIR_DEVTOOLS}   \
    --disable-nls              \
    --with-lib-path=${DIR_DEVTOOLS}/lib \
    --with-sysroot 2>&1 | tee -a ./build.log ; \
    date > build.log ; \
    make 2>&1 | tee -a ./build.log ;
    date >> ./build.log ; } 
#
#
make install
#
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new ${DIR_DEVTOOLS}/bin
real	0m37.294s
user	1m59.288s
sys	0m31.555s

GCC-4.8.2 - Pass 2

#
export GCC_VER=4.8.2
cd
rm -rf gcc-${GCC_VER}
tar jxf gcc-${GCC_VER}.tar.bz2
cd gcc-${GCC_VER}
#
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
  `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h
#
case `uname -m` in
  i?86) sed -i 's/^T_CFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in ;;
esac
#
for file in \
 $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
  cp -uv $file{,.orig}
  sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
      -e 's@/usr@/tools@g' $file.orig > $file
  echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
  touch $file.orig
done
#
tar jxf ../mpfr-3.1.4.tar.bz2 ; mv mpfr-3.1.4 mpfr
tar jxf ../gmp-5.1.3.tar.bz2 ; mv gmp-5.1.3 gmp
tar zxf ../mpc-1.0.3.tar.gz ; mv mpc-1.0.3 mpc
#
mkdir -v ../gcc-build2
cd ../gcc-build2
#
time { date > build.log ; \
CC=$LFS_TGT-gcc                                      \
CXX=$LFS_TGT-g++                                     \
AR=$LFS_TGT-ar                                       \
RANLIB=$LFS_TGT-ranlib                               \
../gcc-${GCC_VER}/configure                               \
    --prefix=${DIR_DEVTOOLS}                                  \
    --with-local-prefix=${DIR_DEVTOOLS}                       \
    --with-native-system-header-dir=${DIR_DEVTOOLS}/include   \
    --enable-clocale=gnu                             \
    --enable-shared                                  \
    --enable-threads=posix                           \
    --enable-__cxa_atexit                            \
    --enable-languages=c,c++                         \
    --disable-libstdcxx-pch                          \
    --disable-multilib                               \
    --disable-bootstrap                              \
    --disable-libgomp                                \
    --with-mpfr-include=$(pwd)/../gcc-${GCC_VER}/mpfr/src \
    --with-mpfr-lib=$(pwd)/mpfr/src/.libs 2>&1 | tee -a ./build.log ; \
    date > build.log ; \
    make 2>&1 | tee -a ./build.log ;
    date >> ./build.log ; } 
#
make install
ln -sv gcc ${DIR_DEVTOOLS}/bin/cc
real	3m12.693s
user	19m14.054s
sys	2m55.119s
.
.
lfs:~/gcc-build2$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/mnt/lfs/tools/bin/../libexec/gcc/i686-pc-linux-gnu/4.8.2/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.8.2/configure --prefix=/tools --with-local-prefix=/tools --with-native-system-header-dir=/tools/include --enable-clocale=gnu --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-languages=c,c++ --disable-libstdcxx-pch --disable-multilib --disable-bootstrap --disable-libgomp --with-mpfr-include=/home/lfs/gcc-build2/../gcc-4.8.2/mpfr/src --with-mpfr-lib=/home/lfs/gcc-build2/mpfr/src/.libs
Thread model: posix
gcc version 4.8.2 (GCC) 
lfs:~/gcc-build2$ 

For the time being

――It's fixed to / tools /, but it seems to be usable for the time being.

Recommended Posts

[Memo] Run Node.js v4.4.5 on CentOS 4.9 / RHEL4 (i386) for the time being (gcc-4.8 and glibc2.11 on LinuxKernel 2.6.9)
Run Dataflow, Java, streaming for the time being
A memo to do for the time being when building CentOS 6 series with VirtualBox
Access Web API on Android with Get and process Json (Java for the time being)
Java14 came out, so I tried record for the time being
Instructions for installing and using the AWS command line (awscli) on CentOS
Building a DLNA server on Ubuntu (just move for the time being)
For the time being, run the war file delivered in Java with Docker
Creating an app and deploying it for the first time on heroku
The training for newcomers was "Make an app!", So I made an app for the time being.
I want you to use Scala as Better Java for the time being
[Deep Learning from scratch] in Java 1. For the time being, differentiation and partial differentiation
left4dead2 I made a Docker image for the server and tried running it on GCE # 3 (I had a hard time building the server)