apacheのmod_sslを後から追加しようとしたら、こんなエラーに遭遇
[code]
# /usr/local/apache2/bin/apxs -i -a -c -I/usr/local/openssl/include/openssl mod_ssl.c
/usr/local/apache-2.2.31/build/libtool –silent –mode=compile gcc -prefer-pic -DLINUX -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache-2.2.31/include -I/usr/local/apache-2.2.31/include -I/usr/local/apache-2.2.31/include -I/usr/local/openssl/include/openssl -c -o mod_ssl.lo mod_ssl.c && touch mod_ssl.slo
ssl_private.h:60 から include されたファイル中,
mod_ssl.c:27 から:
ssl_toolkit_compat.h:267:2: error: #error "Unrecognized SSL Toolkit!"
In file included from ssl_private.h:86,
from mod_ssl.c:27:
~中略~
ssl_private.h:644: error: declaration for parameter ‘ssl_init_Child’ but no such parameter
mod_ssl.c:572: error: expected ‘{‘ at end of input
apxs:Error: Command failed with rc=65536
[/code]
調べたら、そもそもopensslのソースインストールが失敗してた。
改めて、opensslのインストールをしたけど、こっちもエラーでインストールできない。
[code]
make[2]: Entering directory `/usr/local/src/openssl-1.0.2g’
[ -z "" ] || gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,–noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -Iinclude \
-DFINGERPRINT_PREMAIN_DSO_LOAD -o fips_premain_dso \
fips_premain.c fipscanister.o \
libcrypto.a -ldl -lz
make[3]: Entering directory `/usr/local/src/openssl-1.0.2g’
make[4]: Entering directory `/usr/local/src/openssl-1.0.2g’
/usr/bin/ld: libcrypto.a(rsaz_exp.o): relocation R_X86_64_32 against `.rodata’ can not be used when making a shared object; recompile with -fPIC
libcrypto.a(rsaz_exp.o): could not read symbols: Bad value
collect2: ld returned 1 exit status
make[4]: *** [link_a.gnu] Error 1
make[4]: Leaving directory `/usr/local/src/openssl-1.0.2g’
make[3]: *** [do_linux-shared] Error 2
make[3]: Leaving directory `/usr/local/src/openssl-1.0.2g’
make[2]: *** [libcrypto.so.1.0.0] Error 2
make[2]: Leaving directory `/usr/local/src/openssl-1.0.2g’
make[1]: *** [shared] エラー 2
make[1]: ディレクトリ `/usr/local/src/openssl-1.0.2g/crypto’ から出ます
make: *** [build_crypto] エラー 1
[/code]
このエラーを解決するには、configオプションに、-fPICを付けてあげる
[code]
./config -fPIC –prefix=/usr/local/openssl-1.0.2g shared zlib
make
make install
[/code]
で、もう一度「/usr/local/apache2/bin/apxs -i -a -c -I/usr/local/openssl/include/openssl mod_ssl.c」を実行したけど、まだ同じエラーが出る。
ldconfigは実行済みなのに・・・
再度ググって、こちらのページを見つけた。元RX-7乗りの適当な日々
同じことやったら通った!
[code]
/usr/local/apache2/bin/apxs -c -i -a -D HAVE_OPENSSL=1 *.c -lcrypto -lssl
[/code]