configureが失敗した際の解決メモ:(error: C compiler cannot create executables と configure: error: C++ preprocessor “/lib/cpp” fails sanity check)

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を追ってみると、問題が解決できるね、という話でした。めでたし!!

タイトルとURLをコピーしました