質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

9758閲覧

MySQLをcmakeでコンパイルして失敗する

kanrin0

総合スコア34

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

1グッド

0クリップ

投稿2016/07/08 07:34

編集2016/07/12 06:41

CentOS6.7(64bit)
の環境に、MySQL(ソース)をcmakeでコンパイルしようと下記のようにしました。

[root@hostname mysql-5.7.13]#cmake . -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_SSL=bundled

しかし、以下のエラーとなってアボートします。

CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in
/usr/local/bin
CMake Error: Error executing cmake::LoadCache(). Aborting.

ここに至るまで、以下、
1.MySQLソースファイル(mysql-5.7.13)のダウンロード
cd /usr/local/src
wget ftp://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.7/mysql-5.7.13.tar.gz
tar xzvf mysql-5.7.13.tar.gz

2.CMakeのインストール
wget http://www.cmake.org/files/v3.3/cmake-3.3.1.tar.gz
tar xzvf cmake-3.3.1.tar.gz
cd cmake-3.3.1
./configure
make
porg -lD "make install"

3.ncursesのインストール
wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz
tar xzvf ncurses-6.0.tar.gz
cd ncurses-6.0
./configure --with-shared --with-normal
make
porg -lD "make install"

を実行しています。(参考:http://qiita.com/ksugawara61/items/f42a796488d227e4f79e)

お分かりになる方、ご教示お願い申し上げます。

ーーーーーーーーーーー
coco_bauerさま
コメントいただきありがとうございます。

CMAKE_ROOTという環境変数はありますか?

Linux初心者につき、調べ方がわかりません。
すみませんがこれも含めましてお教え願えればと思います。

ーーーーーーーーーーー
katsukoさま
コメントいただきありがとうございます。
cmake --system-information | grep CMAKE_ROOT
の結果は
CMAKE_ROOT "/usr/local/share/cmake-3.3"
でした。
which cmake
/usr/local/bin/cmake
でした。
/usr/local/bin/cmake --version
cmake version 3.3.1
です。

ーーーーーーーーーーー
CHERRYさま
コメントいただきありがとうございます。

コマンドラインより、env実行し、CMAKE_ROOTは確認できませんでした。
HOSTNAME=hogehoge
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arj=01;31:.taz=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.zip=01;31:.z=01;31:.Z=01;31:.dz=01;31:.gz=01;31:.lz=01;31:.xz=01;31:.bz2=01;31:.tbz=01;31:.tbz2=01;31:.bz=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.rar=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.jpg=01;35:.jpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.axv=01;35:.anx=01;35:.ogv=01;35:.ogx=01;35:.aac=01;36:.au=01;36:.flac=01;36:.mid=01;36:.midi=01;36:.mka=01;36:.mp3=01;36:.mpc=01;36:.ogg=01;36:.ra=01;36:.wav=01;36:.axa=01;36:.oga=01;36:.spx=01;36:.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=ja_JP.UTF-8
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
QTLIB=/usr/lib64/qt-3.3/lib
CVS_RSH=ssh
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=:0.0
G_BROKEN_FILENAMES=1
XAUTHORITY=/root/.xauthp5PzIn
_=/bin/env

のような結果です。

KiyoshiMotoki👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2016/07/08 08:26

CMAKE_ROOTという環境変数はありますか? CMAKE_ROOTには、cmakeのモジュールが入っているディレクトリが設定されていますか? 正しく設定されているかを確認してください。
katsuko

2016/07/08 13:26

「cmake --system-information | grep CMAKE_ROOT」と「which cmake」も試してください。 なんとなく、ディストリビューションのcmakeがインストールされているのに更にインストールしちゃった、てな感じがするのですが、憶測なので回答は控えておきます。
CHERRY

2016/07/10 22:38

コマンドラインで、env (リターン) で、環境変数の一覧が、表示されると思います。
guest

回答1

0

ベストアンサー

ちょっと長くなりそうなので、解決案ではありませんが回答欄にて返事を。
一応、以下の点を確認してください。

キャッシュのクリア

MySQLのソースコードディレクトリ(「/usr/local/src/mysql-5.7,13」ですかね?もし違っていたら、読み換えてください。)に、もし「CMakeCache.txt」というファイルがあれば 削除して、もう一度cmakeを実行してください。
なお、「CMakeLists.txt」ではないので、そちらは削除しないよう注意してください。

一応、MySQLのソースコードのtarballには入ってなかったみたいですが、何らかの操作でキャッシュが残っているのかもしれません。

単純なcmakeプロジェクトを作って、確認

とりあえず適当なディレクトリを作って、そこに簡単なcmakeプロジェクトを作ってcmakeを実行してみてください。

bash

1mkdir hoge && cd hoge 2echo 'cmake_minimum_required(VERSION 3.0)' > CMakeLists.txt 3cmake .

これで同じエラーが発生すればcmakeが怪しい、エラーが発生しなければMySQLのほうが怪しい、と疑えます。(断定は禁物ですがね)

Modules/CMake.cmakeの確認

「/usr/local/share/cmake-3.3」ディレクトリ以下にcmakeの各種ファイルが存在するか、確認してください。
特に、先のエラーメッセージは、「Modules/CMake.cmake」がないと発生するエラーのようです。

ちなみに、自分がcmake-3.3.1をビルドして仮インストールしてみた結果、「/usr/local/share/cmake-3.3」以下には、以下のようなディレクトリがありました。

Help Modules Templates completions editors include

porgでインストール状態を確認

自分はporgというソフトは知らなかったのですが、参考にされているQiitaの投稿者の方が、別の投稿で説明されていました。

これによると、「porg -f cmake」でインストールしたファイルが確認できるそうなので、どこにインストールされたか、インストールされたファイルがちゃんと存在するか、確認してみてください。


あと、あまり解決には結びつかないとは思いますが、情報としてOS(linuxだと思うけど、もしそうであればディストリビューション名とバージョンなど)も明記した方がいいと思います。
(どこで問題のヒントが得られるか、わかりませんし)


コメントに対する追記

キャッシュクリアでcmakeが動いたようで、問題の原因はキャッシュにあったようですね。

CMake Error at cmake/boost.cmake:81 (MESSAGE): You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory> This CMake script will look for boost in <directory>. If it is not there, it will download and unpack it (in that directory) for you. If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://example.com:80

boostとは、C++のライブラリです。

「『-DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>』をつける事により、ダウンロードすることができる。
このCMakeスクリプトは、<directory>の中のboostを探す。もしそこになければ、(そのディレクトリに)ダウンロードして展開する。
もしあなたがファイヤウォール内にいるのであれば、(以下のように)HTTPプロキシを使う必要があるだろう。」
と言っています。多分。(英語は苦手なんで)

なので、cmakeの引数に「-DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>」を追加して、実行してください。
(「<directory>」は、とりあえず適当なディレクトリを指定してください。)

投稿2016/07/11 15:20

編集2016/07/12 12:49
katsuko

総合スコア3469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanrin0

2016/07/12 07:25

katsukoさま 引き続きコメントを頂戴し有難う御座います。 1.キャッシュのクリア  CMakeCache.txtを削除し再度cmakeを実行: #cmake . -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_SSL=bundled -- Running cmake version 3.3.1 -- Could NOT find Git (missing: GIT_EXECUTABLE) -- Configuring with MAX_INDEXES = 64U -- SIZEOF_VOIDP 8 -- MySQL 5.7.13 -- Packaging as: mysql-5.7.13-Linux-x86_64 -- Looked for boost/version.hpp in and -- BOOST_INCLUDE_DIR BOOST_INCLUDE_DIR-NOTFOUND -- LOCAL_BOOST_DIR -- LOCAL_BOOST_ZIP -- Could not find (the correct version of) boost. -- MySQL currently requires boost_1_59_0 CMake Error at cmake/boost.cmake:81 (MESSAGE): You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory> This CMake script will look for boost in <directory>. If it is not there, it will download and unpack it (in that directory) for you. If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://example.com:80 Call Stack (most recent call first): cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST) CMakeLists.txt:451 (INCLUDE) -- Configuring incomplete, errors occurred! See also "/usr/local/src/mysql-5.7.13/CMakeFiles/CMakeOutput.log". ※CMakeOutput.logは、○○ディレクトリに入ります。・・・から出ます。  などの記載された800行以上のログです。 ーーーーーーーーーーーーーー 2.単純なcmakeプロジェクトを作って確認 cmakeは成功しているようです。 # echo 'cmake_minimum_required(VERSION 3.0)' > CMakeLists.txt [root@Z0000155707 hoge]# cmake . -- The C compiler identification is GNU 4.4.7 -- The CXX compiler identification is GNU 4.4.7 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /usr/local/src/mysql-5.7.13/hoge [root@Z0000155707 hoge]# ls CMakeCache.txt CMakeFiles CMakeLists.txt Makefile cmake_install.cmake ーーーーーーーーーーーーーー 3.Modules/CMake.cmakeの確認  貴殿と同じディレクトリ構成です。 ーーーーーーーーーーーーーー 4. porgでインストール状態を確認 #porg -f cmake /usr/local/src/cmake-3.3.1/ の下のファイル及び、ディレクトリの下のファイルがズラズラと表示されました。 以上です。 ■ご指摘有難う御座います。 使用環境は CentOS6.7(64bit) です。(質問冒頭に追記しました)
kanrin0

2016/07/15 07:00

katsukoさま コメントを追記頂きまして有難う御座います。回答遅れましてすみません。 できました! download_boostというディレクトリを作り、cmakeを再実行してみました。 # cmake . -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_SSL=bundled -DDOWNLOAD_BOOST=1 -DWITH_BOOST=download_boost -- Running cmake version 3.3.1 -- Could NOT find Git (missing: GIT_EXECUTABLE) -- Configuring with MAX_INDEXES = 64U -- SIZEOF_VOIDP 8 -- MySQL 5.7.13 -- Packaging as: mysql-5.7.13-Linux-x86_64 -- Downloading boost_1_59_0.tar.gz to /usr/local/src/mysql-5.7.13/download_boost -- Download failed, error: 7;"Couldn't connect to server" CMake Error at cmake/boost.cmake:194 (MESSAGE): You can try downloading http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz manually using curl/wget or a similar tool 途中でアボートし、マニュアルでやれ。ということなので、boost_1_59_0.tar.gz をwgetしてみました。 2016-07-13 10:01:10 (79.1 MB/s) - `boost_1_59_0.tar.gz' へ保存完了 [639/639] しかし、実体の79.1 MBに対して、639byteしかダウンロードできず、その間、会社の業務に追われていました(空き時間で、業務用の新DBを作ろうとしています。) でも、今日再実行してみたら、今度はなぜかダウンロードでき、解凍もtarコマンドで実行したので、最初のcmakeコマンド(ダウンロードオプションのないやつ)のままで実行したら最後まで行った様子です。現在、mysqlのmakeをかけているところです。 助かりました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問