2016-07-11 10 views
0

Ich bin auf diesem Link Problem mit Apache httpd 2.4 mit APR + Ldap-Unterstützung fest. Ich bekomme immer wieder "undefinierte Referenz" -Fehler beim Verknüpfungsschritt. Hier ist, was ich getan habe:Kompilieren/Verknüpfen Problem mit httpd 2.4 und APR + Ldap - "undefined Verweis ..."

Manuell kompiliert & installiert APR ohne Fehler.

cd ~/httpd24/httpd-2.4.20/srclib/apr 
./configure --prefix=/appserver/apache_httpd >configure.log 2>&1 
make 
make install 

manuell & installiert April-Util ohne Fehler kompiliert.

cd ~/httpd24/httpd-2.4.20/srclib/apr-util 
./configure --prefix=/appserver/apache_httpd --with-ldap --with-apr=../apr --with-crypto >configure.log 2>&1 
make 
make install 

Hier ist, wo das Problem geschieht ...

cd ~/httpd24/httpd-2.4.20 
./configure --prefix=/appserver/apache_httpd --with-ldap --with-included-apr --enable-mods-shared=most --disable-http2 --with-crypto --enable-authnz-ldap --enable-ldap >configure.log 2>&1 
make 

[...] 

gcc -std=gnu99 -g -O2 -pthread -DLINUX -D_REENTRANT -D_GNU_SOURCE -I. -I/home/asadmin/httpd24/httpd-2.4.20/os/unix -I/home/asadmin/httpd24/httpd-2.4.20/include -I/home/asadmin/httpd24/httpd-2.4.20/srclib/apr/include -I/home/asadmin/httpd24/httpd-2.4.20/srclib/apr-util/include -I/home/asadmin/httpd24/httpd-2.4.20/modules/aaa -I/home/asadmin/httpd24/httpd-2.4.20/modules/cache -I/home/asadmin/httpd24/httpd-2.4.20/modules/core -I/home/asadmin/httpd24/httpd-2.4.20/modules/database -I/home/asadmin/httpd24/httpd-2.4.20/modules/filters -I/home/asadmin/httpd24/httpd-2.4.20/modules/ldap -I/home/asadmin/httpd24/httpd-2.4.20/modules/loggers -I/home/asadmin/httpd24/httpd-2.4.20/modules/lua -I/home/asadmin/httpd24/httpd-2.4.20/modules/proxy -I/home/asadmin/httpd24/httpd-2.4.20/modules/session -I/home/asadmin/httpd24/httpd-2.4.20/modules/ssl -I/home/asadmin/httpd24/httpd-2.4.20/modules/test -I/home/asadmin/httpd24/httpd-2.4.20/server -I/home/asadmin/httpd24/httpd-2.4.20/modules/arch/unix -I/home/asadmin/httpd24/httpd-2.4.20/modules/dav/main -I/home/asadmin/httpd24/httpd-2.4.20/modules/generators -I/home/asadmin/httpd24/httpd-2.4.20/modules/mappers -c /home/asadmin/httpd24/httpd-2.4.20/server/buildmark.c 
/home/asadmin/httpd24/httpd-2.4.20/srclib/apr/libtool --silent --mode=link gcc -std=gnu99 -g -O2 -pthread -o httpd modules.lo buildmark.o -export-dynamic server/libmain.la modules/core/libmod_so.la modules/http/libmod_http.la server/mpm/event/libevent.la os/unix/libos.la -lpcre /home/asadmin/httpd24/httpd-2.4.20/srclib/apr-util/libaprutil-1.la -lexpat /home/asadmin/httpd24/httpd-2.4.2a0/srclib/apr/libapr-1.la -lrt -lcrypt -lpthread 
server/.libs/libmain.a(exports.o):(.data+0x27a8): undefined reference to `apr_ldap_ssl_init' 
server/.libs/libmain.a(exports.o):(.data+0x27b0): undefined reference to `apr_ldap_ssl_deinit' 
server/.libs/libmain.a(exports.o):(.data+0x27b8): undefined reference to `apr_ldap_init' 
server/.libs/libmain.a(exports.o):(.data+0x27c0): undefined reference to `apr_ldap_info' 
server/.libs/libmain.a(exports.o):(.data+0x27c8): undefined reference to `apr_ldap_get_option' 
server/.libs/libmain.a(exports.o):(.data+0x27d0): undefined reference to `apr_ldap_set_option' 
server/.libs/libmain.a(exports.o):(.data+0x27d8): undefined reference to `apr_ldap_rebind_init' 
server/.libs/libmain.a(exports.o):(.data+0x27e0): undefined reference to `apr_ldap_rebind_add' 
server/.libs/libmain.a(exports.o):(.data+0x27e8): undefined reference to `apr_ldap_rebind_remove' 
server/.libs/libmain.a(exports.o):(.data+0x27f0): undefined reference to `apr_ldap_is_ldap_url' 
server/.libs/libmain.a(exports.o):(.data+0x27f8): undefined reference to `apr_ldap_is_ldaps_url' 
server/.libs/libmain.a(exports.o):(.data+0x2800): undefined reference to `apr_ldap_is_ldapi_url' 
server/.libs/libmain.a(exports.o):(.data+0x2808): undefined reference to `apr_ldap_url_parse_ext' 
server/.libs/libmain.a(exports.o):(.data+0x2810): undefined reference to `apr_ldap_url_parse' 
collect2: ld returned 1 exit status 
make[1]: *** [httpd] Error 1 
make[1]: Leaving directory `/home/asadmin/httpd24/httpd-2.4.20' 
make: *** [all-recursive] Error 1 

einige Online-Forschung tun, habe ich gelernt, über die „nm“ Werkzeug und der --demangle Option, die häufig verwendet wird, ähnliche Probleme zu beheben Verknüpfung . Ich gebe zu, ich nicht erfahren genug bin um alle Vorteile dieses Werkzeugs zu nehmen und die Erkenntnisse, aber hier ist, was ich herausgefunden habe:

[email protected]:~/httpd24/httpd-2.4.20> for f in `find . -type f -name "*.o"`; do obj_file="$f"; nm --demangle $f | grep apr_ldap_ && echo "^ $obj_file"; done 
0000000000000000 t apr_ldap_pool_cleanup_set_null 
00000000000000b0 t apr_ldap_rebind_remove_helper 
0000000000000000 b apr_ldap_xref_lock 
^ ./srclib/apr-util-1.5.4/ldap/.libs/apr_ldap_rebind.o 
0000000000000000 t apr_ldap_pool_cleanup_set_null 
00000000000000b0 t apr_ldap_rebind_remove_helper 
0000000000000000 b apr_ldap_xref_lock 
^ ./srclib/apr-util-1.5.4/ldap/apr_ldap_rebind.o 
00000000000027c8 D ap_hack_apr_ldap_get_option 
00000000000027c0 D ap_hack_apr_ldap_info 
00000000000027b8 D ap_hack_apr_ldap_init 
00000000000027f0 D ap_hack_apr_ldap_is_ldap_url 
0000000000002800 D ap_hack_apr_ldap_is_ldapi_url 
00000000000027f8 D ap_hack_apr_ldap_is_ldaps_url 
00000000000027e0 D ap_hack_apr_ldap_rebind_add 
00000000000027d8 D ap_hack_apr_ldap_rebind_init 
00000000000027e8 D ap_hack_apr_ldap_rebind_remove 
00000000000027d0 D ap_hack_apr_ldap_set_option 
00000000000027b0 D ap_hack_apr_ldap_ssl_deinit 
00000000000027a8 D ap_hack_apr_ldap_ssl_init 
0000000000002810 D ap_hack_apr_ldap_url_parse 
0000000000002808 D ap_hack_apr_ldap_url_parse_ext 
       U apr_ldap_get_option 
       U apr_ldap_info 
       U apr_ldap_init 
       U apr_ldap_is_ldap_url 
       U apr_ldap_is_ldapi_url 
       U apr_ldap_is_ldaps_url 
       U apr_ldap_rebind_add 
       U apr_ldap_rebind_init 
       U apr_ldap_rebind_remove 
       U apr_ldap_set_option 
       U apr_ldap_ssl_deinit 
       U apr_ldap_ssl_init 
       U apr_ldap_url_parse 
       U apr_ldap_url_parse_ext 
^ ./server/exports.o 
[email protected]:~/httpd24/httpd-2.4.20> 

Also diese apr_ldap_ * Verweise sind als U aufgelistet, die nicht definiert ist, daher der Fehler. Jedoch gibt es Ap_hack_apr_ldap_ * Verweise, die verknüpft werden ... sind diese Wrapper von irgendeiner Art? Ich frage mich, ob etwas versucht, diese apr_ldap_ * Referenzen zu verwenden, aber sie sind nicht definiert und sollten stattdessen die Versionen von ap_hack_apr_ * verwenden, die verlinkt sind. Ich weiß nicht genau, wo die Dinge schief laufen, aber das ist nur meine Spekulation. Irgendwelche Ideen?

Auch habe ich die openldap und openldap-devel Pakete installiert:

[email protected]:~/httpd24/httpd-2.4.20> rpm -qa | grep openldap 
openldap-2.4.40-12.el6.x86_64 
openldap-devel-2.4.40-12.el6.x86_64 

Antwort

0

Ich hatte gerade das gleiche Problem. In meinem Fall, ich denke, es ist wegen einer schlechten Kompilierung auf April-Util passiert. Ich habe es kompiliert mit:

./configure --with-apr =/usr/local/apr/bin - mit-ldap; machen; make installieren;

und die oben beschriebenen Fehler beim Versuch, httpd zu kompilieren, erhalten. Ich ging zurück zu apr-util und gab ein 'make distclean' aus und führte die obigen Schritte erneut aus. httpd konnte dann kompilieren. Ich denke, meine Distribution Kopie auf apr-util war schmutzig von einer vorherigen Kompilierung.