私は現在、CentOS 7でカスタム64ビットLAMPPスタックを作成しようとしています。このスタックでは、各コンポーネントが独自のフォルダーに存在し、すべての依存関係が含まれ、独自のフォルダーに存在する必要があります。
現在、私は正しくコンパイルされたプログラムで次の構造を持っています:
- /opt/lampp64
- apr
- bzip2
- cyrus-sasl
- gdbm
- libtool
- ncurses
- openldap
- openssl
- pcre
- Perl
- readline
- zlib
各ソフトウェアは、次のフォルダに完全に含まれています。
最新バージョンでapr-utilソースをダウンロードし、それらをコンパイルしようとしていますが、コマンドは次のとおりです。
./configure --prefix=/opt/lampp64/apr-util/X.Y.Z --with-openssl=/opt/lampp64/openssl/current --with-openldap=/opt/lampp64/openldap/current
Openldapが見つからないと言って失敗します。無効にすると、すべてうまくいきます。
これは標準のディレクトリレイアウトではなく、単なる実験ですが、依存関係のある他のプログラムはすでに正しくコンパイルされています。
LDAPライブラリを「表示」するために、configure
にオプションを追加する必要がありますか?
これがコマンドと出力全体です。
./configure --prefix=/opt/lampp64/apr-util/1.5.4 --with-apr=/opt/lampp64/apr/current --with-gdbm=/opt/lampp64/gdbm/current --with-openssl=/opt/lampp64/openssl/current --with-crypto --with-ldap=openldap --with-ldap-lib=/opt/lampp64/openldap/current/lib --with-ldap-include=/opt/lampp64/openldap/current/include
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 for working mkdir -p... yes
APR-util Version: 1.5.4
checking for chosen layout... apr-util
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
Applying apr-util hints file rules for x86_64-unknown-linux-gnu
checking for APR... yes
setting CPP to "gcc -E"
adding "-pthread" to CFLAGS
adding "-DLINUX" to CPPFLAGS
adding "-D_REENTRANT" to CPPFLAGS
adding "-D_GNU_SOURCE" to CPPFLAGS
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
configure: checking for openssl in /opt/lampp64/openssl/current
checking openssl/x509.h usability... yes
checking openssl/x509.h presence... yes
checking for openssl/x509.h... yes
checking for BN_init in -lcrypto... yes
checking for SSL_accept in -lssl... yes
setting APRUTIL_LDFLAGS to "-L/opt/lampp64/openssl/current/lib"
setting APRUTIL_INCLUDES to "-I/opt/lampp64/openssl/current/include"
checking whether EVP_PKEY_CTX_new is declared... yes
setting LDADD_crypto_openssl to "-L/opt/lampp64/openssl/current/lib -lssl -lcrypto"
checking for const input buffers in OpenSSL... yes
checking for ldap support...
adding "-I/opt/lampp64/openldap/current/include" to APRUTIL_INCLUDES
adding "-L/opt/lampp64/openldap/current/lib" to APRUTIL_LDFLAGS
checking for ldap_init in -lopenldap... no
checking for ldap_init in -lopenldap... no
checking for ldap_init in -lopenldap... no
checking for ldap_init in -lopenldap... no
configure: error: could not find an LDAP library
RHEL7でも同様の問題が発生しました。カスタムコンパイルされたopensslに対してapr-utilをコンパイルしていました。また、openssl-develパッケージがインストールされており、apr-utilの./configureステップが常に失敗していることがわかりました。
したがって、私にとっての秘訣は、openssl-develを削除し、スタック全体(openssl、openldap、apr、apr-util)を再コンパイルすることでした。
行で:
checking for ldap_init in -lopenldap... no
openldapというライブラリに対してリンクしようとしていますが、openldap lib dirを見ると、libopenldap.so
が表示されません。
liblber.so
libldap.so
libldap_r.so
-lopenldap
の値は--with-ldap=openldap
オプションから来ているように見えるので、それを--with-ldap=ldap
に変更すると機能するようです。
私はあなたのすべてのオプションを試したわけではないので、他のすべてが機能するかどうかはわかりません:)