ApacheとTomcatを連携させるモジュールmod_jkのビルドの際に、configureでエラーに遭遇したので、その時のメモ。
ちなみに、このconfigureのエラーはmod_jkに限らず、似たようなものが他の何かの際にもあるみたい。ご参考までに。
gccが存在しない場合のエラー
configureをやったところ、エラーが出てしまった。出てきたエラーは「error: C compiler cannot create executables」というエラー。
# cd /usr/local/src/tomcat-connectors-1.2.37-src/native # ./configure --with-apxs=/usr/sbin/apxs checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for test... /usr/bin/test checking for grep... /bin/grep checking for echo... /bin/echo checking for sed... /bin/sed checking for cp... /bin/cp checking for mkdir... /bin/mkdir need to check for Perl first, apxs depends on it... checking for perl... /usr/bin/perl APRINCLUDEDIR is -I/usr/include/apr-1 -I/usr/include/apr-1 building connector for "apache-2.0" checking for gcc... gcc checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details.
config.logができているので、確認してみると、以下のような記述。
# ls /usr/local/src/tomcat-connectors-1.2.37-src/native aclocal.m4 BUILDING.txt configure Makefile.am README.txt apache-1.3 common configure.in Makefile.in scripts apache-2.0 config.log docs netscape STATUS.txt buildconf.sh config.nice iis nt_service TODO.txt # more config.log This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake (中略) configure:2607: result: gcc configure:2851: checking for C compiler version configure:2854: gcc --version &5 ./configure: line 2855: gcc: command not found (以下略)
gccコマンドが存在しないためにエラーになっているらしい。
そこで、gccをインストールすることに。
# yum install gcc (省略) Installed: gcc.x86_64 0:4.4.7-3.el6 Dependency Installed: cloog-ppl.x86_64 0:0.15.7-1.2.el6 cpp.x86_64 0:4.4.7-3.el6 glibc-devel.x86_64 0:2.12-1.107.el6 glibc-headers.x86_64 0:2.12-1.107.el6 kernel-headers.x86_64 0:2.6.32-358.el6 mpfr.x86_64 0:2.4.1-6.el6 ppl.x86_64 0:0.10.2-11.el6 Complete!
g++が存在しない場合のエラー
これで改めてconfigureを実行。
ところが残念ながらまた失敗。同じように追ってみる。今度のエラーは「error: C++ preprocessor “/lib/cpp” fails sanity check」という名前のエラーだった。
# ./configure --with-apxs=/usr/sbin/apxs (略) checking whether we are using the GNU C++ compiler... no checking whether g++ accepts -g... no checking dependency style of g++... none checking how to run the C++ preprocessor... /lib/cpp configure: error: C++ preprocessor "/lib/cpp" fails sanity check See `config.log' for more details. # more config.log (略) configure:5078: checking for C++ compiler version configure:5081: g++ --version &5 ./configure: line 5082: g++: command not found
とあるので、今度はg++コマンドがないらしい。
なので今度はg++コマンドをインストール。こちらはパッケージ名は「g++」ではなくて「gcc-c++」だというところが注意点!
# yum install gcc-c++ (略) Installed: gcc-c++.x86_64 0:4.4.7-3.el6 Dependency Installed: libstdc++-devel.x86_64 0:4.4.7-3.el6 Complete!
今度こそ、ということでまたconfigureを実行。
今度こそうまくいきました!!
# ./configure --with-apxs=/usr/sbin/apxs (省略) configure: creating ./config.status config.status: creating Makefile config.status: creating apache-1.3/Makefile config.status: creating apache-1.3/Makefile.apxs config.status: creating apache-2.0/Makefile config.status: creating apache-2.0/Makefile.apxs config.status: creating common/Makefile config.status: creating common/list.mk config.status: creating common/jk_types.h config.status: creating common/config.h config.status: executing depfiles commands
きちんとMakefileも作成されていました。
# ls aclocal.m4 BUILDING.txt config.status iis Makefile.in scripts apache-1.3 common configure libtool netscape STATUS.txt apache-2.0 config.log configure.in Makefile nt_service TODO.txt buildconf.sh config.nice docs Makefile.am README.txt
おしまい
というわけで、きちんとonfigure.logを追ってみると、問題が解決できるね、という話でした。めでたし!!