雑記

インフラのことだったりプログラムのことだったりどうでもいいこと書いたり。要は雑記。

CentOS5系にMySQL5.6.10をソースからインストール

cmake使って普通にインストールしようとしたら見事にエラー。

 

どんなエラー?
-- Running cmake version 2.6.4
-- The CXX compiler identification is GNU
-- Check for working CXX compiler: /usr/bin/gcc
-- Check for working CXX compiler: /usr/bin/gcc -- broken
CMake Error at /usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:25 (MESSAGE):
The C++ compiler "/usr/bin/gcc" is not able to compile a simple test
program.

It fails with the following output:

Change Dir: /usr/local/src/mysql/mysql-5.6.10/CMakeFiles/CMakeTmp



Run Build Command:/usr/bin/gmake "cmTryCompileExec/fast"

/usr/bin/gmake -f CMakeFiles/cmTryCompileExec.dir/build.make
CMakeFiles/cmTryCompileExec.dir/build

gmake[1]: ディレクトリ
`/usr/local/src/mysql/mysql-5.6.10/CMakeFiles/CMakeTmp' に入ります

/usr/bin/cmake -E cmake_progress_report
/usr/local/src/mysql/mysql-5.6.10/CMakeFiles/CMakeTmp/CMakeFiles 1

Building CXX object CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o

/usr/bin/gcc -O3 -g -o
CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -c
/usr/local/src/mysql/mysql-5.6.10/CMakeFiles/CMakeTmp/testCXXCompiler.cxx

Linking CXX executable cmTryCompileExec

/usr/bin/cmake -E cmake_link_script
CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1

/usr/bin/gcc -O3 -g -fPIC
CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -o cmTryCompileExec
-rdynamic

CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o:(.eh_frame+0x12):
undefined reference to `__gxx_personality_v0'

collect2: ld はステータス 1 で終了しました

gmake[1]: ディレクトリ
`/usr/local/src/mysql/mysql-5.6.10/CMakeFiles/CMakeTmp' から出ます

gmake[1]: *** [cmTryCompileExec] エラー 1

gmake: *** [cmTryCompileExec/fast] エラー 2

コンパイラかな?

調べてみたらどうやらgccのバージョンが古かったみたい。

A working ANSI C++ compiler. GCC 4.2.1 or later, Sun Studio 10 or later, Visual Studio 2008 or later, and many current vendor-supplied compilers are known to work.

 http://dev.mysql.com/doc/refman/5.6/en/source-installation.html

 

gccを入れ替えるのもやだなーと思ったので、php53みたいにyumで提供されてないかなーと思ったら見事にありましたよ。

# yum search gcc
・
・
・
gcc44.x86_64 : GNU Compiler Collection version 4.4
gcc44-c++.x86_64 : C++ support for GCC version 4.4
gcc44-gfortran.x86_64 : Fortran support for GCC 4.4
・
・
・ 
早速インストール
# yum install gcc44 gcc44-c++

で、あらためてmysql5.6をインストール。

CCとCXXのパスはちゃんと通すこと。

他にもmysqlを入れてるのでもろもろオプションを付け足してみる

# CC='gcc44' CXX='g++44'
# export CC CXX
# cmake . \
'-DCMAKE_INSTALL_PREFIX=/var/lib/mysql56' \
'-DDEFAULT_CHARSET=utf8' \
'-DDEFAULT_COLLATION=utf8_general_ci' \
'-DMYSQL_DATADIR=/var/lib/mysql56/data' \
'-DMYSQL_TCP_PORT=3356' \
'-DMYSQL_UNIX_ADDR=/tmp/mysql56.sock' \
'-DENABLED_LOCAL_INFILE=ON' \
'-DWITH_PIC=ON' \
'-DWITH_SSL=bundled' \
'-DWITH_ZLIB=bundled' \
'-DWITH_READLINE=ON' \
'-DWITH_EXTRA_CHARSETS=all'

これで通った!

あとは通常通り

# make
# make install
# cd /var/lib/mysql56
# scripts/mysql_install_db --user=mysql

これでDBの初期設定が終わるので、後は起動スクリプトを実行するだけ。