node.jsをソースからインストールするにあたり、RHEL6.x標準のCコンパイラだとバージョンが古かったので、gccもソースからインストールしました。
今回は、その手順の確認
[root@node01 node.js]# wget https://nodejs.org/dist/v4.2.1/node-v4.2.1.tar.gz
[root@node01 node.js]# tar zxvf node-v4.2.1.tar.gz
[root@node01 node.js]# cd node-v4.2.1
[root@node01 node-v4.2.1]# ./configure
WARNING: C++ compiler too old, need g++ 4.8 or clang++ 3.4 (CXX=g++)
creating ./icu_config.gypi
{ 'target_defaults': { 'cflags': [],
'default_configuration': 'Release',
'defines': [],
'include_dirs': [],
'libraries': []},
'variables': { 'asan': 0,
'gas_version': '2.20',
'host_arch': 'x64',
'icu_small': 'false',
'node_byteorder': 'little',
'node_install_npm': 'true',
'node_prefix': '/usr/local',
'node_release_urlbase': '',
'node_shared_http_parser': 'false',
'node_shared_libuv': 'false',
'node_shared_openssl': 'false',
'node_shared_zlib': 'false',
'node_tag': '',
'node_use_dtrace': 'false',
'node_use_etw': 'false',
'node_use_lttng': 'false',
'node_use_openssl': 'true',
'node_use_perfctr': 'false',
'openssl_fips': '',
'openssl_no_asm': 0,
'python': '/usr/bin/python',
'target_arch': 'x64',
'uv_parent_path': '/deps/uv/',
'uv_use_dtrace': 'false',
'v8_enable_gdbjit': 0,
'v8_enable_i18n_support': 0,
'v8_no_strict_aliasing': 1,
'v8_optimized_debug': 0,
'v8_random_seed': 0,
'v8_use_snapshot': 1,
'want_separate_host_toolset': 0}}
creating ./config.gypi
creating ./config.mk
WARNING: warnings were emitted in the configure phase
バージョンが古いとconfigure時にエラーが出力されます。
[root@node01 node-v4.2.1]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
スレッドモデル: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
現行のバージョンを確認します
4.4.7と古めです
[root@node01 gcc]# mkdir gmp
[root@node01 gcc]# cd gmp
[root@node01 gmp]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/gmp-4.3.2.tar.bz2
[root@node01 gmp]# tar jxvf gmp-4.3.2.tar.bz2
[root@node01 gmp]# cd gmp-4.3.2
[root@node01 gmp-4.3.2]# mkdir /usr/local/gcc
[root@node01 gmp-4.3.2]# ./configure --prefix=/usr/local/gcc
[root@node01 gmp-4.3.2]# make && make install
依存モジュールのインストール
まずはgmpから
以降のモジュールは全て/usr/local/gccにインストールしています。
[root@node01 gcc]# mkdir mpfr
[root@node01 gcc]# cd mpfr/
[root@node01 mpfr]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/mpfr-2.4.2.tar.bz2
[root@node01 mpfr]# tar jxvf mpfr-2.4.2.tar.bz2
[root@node01 mpfr-2.4.2]# ./configure --prefix=/usr/local/gcc --with-gmp=/usr/local/gcc/
[root@node01 mpfr-2.4.2]# make && make install
続いてmpfr
gmpを必要としているモジュールなので--with-gmpオプションでインストール場所を指定しています。
[root@node01 gcc]# mkdir mpc
[root@node01 gcc]# cd mpc
[root@node01 mpc]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/mpc-0.8.1.tar.gz
[root@node01 mpc]# tar zxvf mpc-0.8.1.tar.gz
[root@node01 mpc]# cd mpc-0.8.1
[root@node01 mpc-0.8.1]# ./configure --prefix=/usr/local/gcc --with-gmp=/usr/local/gcc --with-mpfr=/usr/local/gcc
[root@node01 mpc-0.8.1]# make && make install
次にmpc
gmpを必要としているので--with-gmpオプション、mpfrオプションを必要としているので--with-mpfrオプションを指定しています。
[root@node01 tmp]# mkdir gcc
[root@node01 tmp]# cd gcc
[root@node01 gcc]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.gz
--2015-10-29 18:49:54-- http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.gz
ftp.tsukuba.wide.ad.jp をDNSに問いあわせています... 203.178.132.80, 2001:200:0:7c06::9393
ftp.tsukuba.wide.ad.jp|203.178.132.80|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 122655932 (117M) [application/x-gzip]
`gcc-5.2.0.tar.gz' に保存中
100%[======================================>] 122,655,932 10.7M/s 時間 11s
2015-10-29 18:50:05 (10.5 MB/s) - `gcc-5.2.0.tar.gz' へ保存完了 [122655932/122655932]
[root@node01 gcc]# tar zxvf gcc-5.2.0.tar.gz
[root@node01 gcc]# cd gcc-5.2.0
[root@node01 gcc-5.2.0]# ./configure -prefix=/usr/local/gcc -with-gmp=/usr/local/gcc --with-mpfr=/usr/local/gcc -with-mpc=/usr/local/gcc -disable-multilib
[root@node01 gcc-5.2.0]# make && make install
そして、gcc
gmp、mpfr、mpcのインストール場所をそれぞれ指定しています。
makeは相当な時間がかかりました。
[root@node01 gcc-5.2.0]# /usr/local/gcc/bin/gcc -v
組み込み spec を使用しています。
COLLECT_GCC=/usr/local/gcc/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
ターゲット: x86_64-unknown-linux-gnu
configure 設定: ./configure -prefix=/usr/local/gcc -with-gmp=/usr/local/gcc --with-mpfr=/usr/local/gcc -with-mpc=/usr/local/gcc -disable-multilib
スレッドモデル: posix
gcc バージョン 5.2.0 (GCC)
[root@node01 gcc-5.2.0]# ln -sb /usr/local/gcc/bin/gcc /usr/bin/gcc
[root@node01 gcc-5.2.0]# ln -sb /usr/local/gcc/bin/g++ /usr/bin/g++
バージョンアップ後のバージョンを確認
既存コンパイラのリンク先を新規コンパイラに設定します。
[root@node01 node-v4.2.1]# ./configure
creating ./icu_config.gypi
{ 'target_defaults': { 'cflags': [],
'default_configuration': 'Release',
'defines': [],
'include_dirs': [],
'libraries': []},
'variables': { 'asan': 0,
'gas_version': '2.20',
'host_arch': 'x64',
'icu_small': 'false',
'node_byteorder': 'little',
'node_install_npm': 'true',
'node_prefix': '/usr/local',
'node_release_urlbase': '',
'node_shared_http_parser': 'false',
'node_shared_libuv': 'false',
'node_shared_openssl': 'false',
'node_shared_zlib': 'false',
'node_tag': '',
'node_use_dtrace': 'false',
'node_use_etw': 'false',
'node_use_lttng': 'false',
'node_use_openssl': 'true',
'node_use_perfctr': 'false',
'openssl_fips': '',
'openssl_no_asm': 0,
'python': '/usr/bin/python',
'target_arch': 'x64',
'uv_parent_path': '/deps/uv/',
'uv_use_dtrace': 'false',
'v8_enable_gdbjit': 0,
'v8_enable_i18n_support': 0,
'v8_no_strict_aliasing': 1,
'v8_optimized_debug': 0,
'v8_random_seed': 0,
'v8_use_snapshot': 1,
'want_separate_host_toolset': 0}}
creating ./config.gypi
creating ./config.mk
今度はちゃんとconfigureしてくれました。
今回は、その手順の確認
[root@node01 node.js]# wget https://nodejs.org/dist/v4.2.1/node-v4.2.1.tar.gz
[root@node01 node.js]# tar zxvf node-v4.2.1.tar.gz
[root@node01 node.js]# cd node-v4.2.1
[root@node01 node-v4.2.1]# ./configure
WARNING: C++ compiler too old, need g++ 4.8 or clang++ 3.4 (CXX=g++)
creating ./icu_config.gypi
{ 'target_defaults': { 'cflags': [],
'default_configuration': 'Release',
'defines': [],
'include_dirs': [],
'libraries': []},
'variables': { 'asan': 0,
'gas_version': '2.20',
'host_arch': 'x64',
'icu_small': 'false',
'node_byteorder': 'little',
'node_install_npm': 'true',
'node_prefix': '/usr/local',
'node_release_urlbase': '',
'node_shared_http_parser': 'false',
'node_shared_libuv': 'false',
'node_shared_openssl': 'false',
'node_shared_zlib': 'false',
'node_tag': '',
'node_use_dtrace': 'false',
'node_use_etw': 'false',
'node_use_lttng': 'false',
'node_use_openssl': 'true',
'node_use_perfctr': 'false',
'openssl_fips': '',
'openssl_no_asm': 0,
'python': '/usr/bin/python',
'target_arch': 'x64',
'uv_parent_path': '/deps/uv/',
'uv_use_dtrace': 'false',
'v8_enable_gdbjit': 0,
'v8_enable_i18n_support': 0,
'v8_no_strict_aliasing': 1,
'v8_optimized_debug': 0,
'v8_random_seed': 0,
'v8_use_snapshot': 1,
'want_separate_host_toolset': 0}}
creating ./config.gypi
creating ./config.mk
WARNING: warnings were emitted in the configure phase
バージョンが古いとconfigure時にエラーが出力されます。
[root@node01 node-v4.2.1]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
スレッドモデル: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
現行のバージョンを確認します
4.4.7と古めです
[root@node01 gcc]# mkdir gmp
[root@node01 gcc]# cd gmp
[root@node01 gmp]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/gmp-4.3.2.tar.bz2
[root@node01 gmp]# tar jxvf gmp-4.3.2.tar.bz2
[root@node01 gmp]# cd gmp-4.3.2
[root@node01 gmp-4.3.2]# mkdir /usr/local/gcc
[root@node01 gmp-4.3.2]# ./configure --prefix=/usr/local/gcc
[root@node01 gmp-4.3.2]# make && make install
依存モジュールのインストール
まずはgmpから
以降のモジュールは全て/usr/local/gccにインストールしています。
[root@node01 gcc]# mkdir mpfr
[root@node01 gcc]# cd mpfr/
[root@node01 mpfr]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/mpfr-2.4.2.tar.bz2
[root@node01 mpfr]# tar jxvf mpfr-2.4.2.tar.bz2
[root@node01 mpfr-2.4.2]# ./configure --prefix=/usr/local/gcc --with-gmp=/usr/local/gcc/
[root@node01 mpfr-2.4.2]# make && make install
続いてmpfr
gmpを必要としているモジュールなので--with-gmpオプションでインストール場所を指定しています。
[root@node01 gcc]# mkdir mpc
[root@node01 gcc]# cd mpc
[root@node01 mpc]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/mpc-0.8.1.tar.gz
[root@node01 mpc]# tar zxvf mpc-0.8.1.tar.gz
[root@node01 mpc]# cd mpc-0.8.1
[root@node01 mpc-0.8.1]# ./configure --prefix=/usr/local/gcc --with-gmp=/usr/local/gcc --with-mpfr=/usr/local/gcc
[root@node01 mpc-0.8.1]# make && make install
次にmpc
gmpを必要としているので--with-gmpオプション、mpfrオプションを必要としているので--with-mpfrオプションを指定しています。
[root@node01 tmp]# mkdir gcc
[root@node01 tmp]# cd gcc
[root@node01 gcc]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.gz
--2015-10-29 18:49:54-- http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.gz
ftp.tsukuba.wide.ad.jp をDNSに問いあわせています... 203.178.132.80, 2001:200:0:7c06::9393
ftp.tsukuba.wide.ad.jp|203.178.132.80|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 122655932 (117M) [application/x-gzip]
`gcc-5.2.0.tar.gz' に保存中
100%[======================================>] 122,655,932 10.7M/s 時間 11s
2015-10-29 18:50:05 (10.5 MB/s) - `gcc-5.2.0.tar.gz' へ保存完了 [122655932/122655932]
[root@node01 gcc]# tar zxvf gcc-5.2.0.tar.gz
[root@node01 gcc]# cd gcc-5.2.0
[root@node01 gcc-5.2.0]# ./configure -prefix=/usr/local/gcc -with-gmp=/usr/local/gcc --with-mpfr=/usr/local/gcc -with-mpc=/usr/local/gcc -disable-multilib
[root@node01 gcc-5.2.0]# make && make install
そして、gcc
gmp、mpfr、mpcのインストール場所をそれぞれ指定しています。
makeは相当な時間がかかりました。
[root@node01 gcc-5.2.0]# /usr/local/gcc/bin/gcc -v
組み込み spec を使用しています。
COLLECT_GCC=/usr/local/gcc/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
ターゲット: x86_64-unknown-linux-gnu
configure 設定: ./configure -prefix=/usr/local/gcc -with-gmp=/usr/local/gcc --with-mpfr=/usr/local/gcc -with-mpc=/usr/local/gcc -disable-multilib
スレッドモデル: posix
gcc バージョン 5.2.0 (GCC)
[root@node01 gcc-5.2.0]# ln -sb /usr/local/gcc/bin/gcc /usr/bin/gcc
[root@node01 gcc-5.2.0]# ln -sb /usr/local/gcc/bin/g++ /usr/bin/g++
バージョンアップ後のバージョンを確認
既存コンパイラのリンク先を新規コンパイラに設定します。
[root@node01 node-v4.2.1]# ./configure
creating ./icu_config.gypi
{ 'target_defaults': { 'cflags': [],
'default_configuration': 'Release',
'defines': [],
'include_dirs': [],
'libraries': []},
'variables': { 'asan': 0,
'gas_version': '2.20',
'host_arch': 'x64',
'icu_small': 'false',
'node_byteorder': 'little',
'node_install_npm': 'true',
'node_prefix': '/usr/local',
'node_release_urlbase': '',
'node_shared_http_parser': 'false',
'node_shared_libuv': 'false',
'node_shared_openssl': 'false',
'node_shared_zlib': 'false',
'node_tag': '',
'node_use_dtrace': 'false',
'node_use_etw': 'false',
'node_use_lttng': 'false',
'node_use_openssl': 'true',
'node_use_perfctr': 'false',
'openssl_fips': '',
'openssl_no_asm': 0,
'python': '/usr/bin/python',
'target_arch': 'x64',
'uv_parent_path': '/deps/uv/',
'uv_use_dtrace': 'false',
'v8_enable_gdbjit': 0,
'v8_enable_i18n_support': 0,
'v8_no_strict_aliasing': 1,
'v8_optimized_debug': 0,
'v8_random_seed': 0,
'v8_use_snapshot': 1,
'want_separate_host_toolset': 0}}
creating ./config.gypi
creating ./config.mk
今度はちゃんとconfigureしてくれました。