ashwani saxena wrote:
Hi All,

I am trying to build Mozilla ldap c-SDK (Version 6.0.6) using cygwin
(ONLY) in Windows XP environment and having issues while building c-
SDK.

I will illustrate what all I did.

1. Added the following 3 parameters in "mozilla\security\coreconf
\Win32.mk" file.
   Entries:
   DEFAULT_COMPILER = gcc
   NS_USE_GCC=1
   NO_MDUPDATE=1
This entry was required to set the default compiler to 'gcc'.

2. Build NSS with NSPR (NSS-3.12-WITH-NSPR-4.7)by issuing the
following command.
    $mozilla\security\nss: make nss_build_all
    Result: It failed, complaining that below listed modules cant be
built.
    - mozilla\security\nss\cmd\bltest
    - mozilla\security\nss\cmd\certcgi
    - mozilla\security\nss\cmd\fipstest
    - mozilla\security\nss\cmd\ocspclnt
    - mozilla\security\nss\cmd\rsaperf
    - mozilla\security\nss\cmd\signtool
    - mozilla\security\nss\cmd\signver

    ERROR: Each module failed to build coz of following error:
"mozilla/security/nss/lib/libpkix/pkix/top/pkix_build.c:398: undefined
reference to `_PKIX_ResourceLimits_GetMaxFanout'"

3. Not sure whether i really need those commands (above stated) to be
built, I continued and tried to build c-SDK (I have Directory -
mozldap-6.0.6 Version)

4. Issued the configure command from "mozilla\directory\c-sdk"
   $mozilla\directory\c-sdk> ./configure --with-nss [NS_USE_GCC=1]

   NOTE: I explicitly issued with "NS_USE_GCC=1" so that gcc
compiler can be considered. If i dont provide this option then it will
by default look for "cl" thats not configured therefore throwing error
(can not create executables........)

5. Navigated to "mozilla\directory\c-sdk\ldap\include" and issued make
command it. It went fine and copied all the required .h files into
dist folder.

6. Navigated to ""mozilla\directory\c-sdk\ldap" and issued the make
command but it failed.
The error logs are as mentioned:

asax...@xyz/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/6.0.6/mozilla/
directory/c-sdk/ldap
$ make
cd include; make BUILD_DEBUG=full export
make[1]: Entering directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/include'
/usr/bin/nsinstall -D ../../../../dist/public/ldap
/usr/bin/nsinstall -D ../../../../dist/public/ldap-private
/usr/bin/nsinstall -R  -m 644 ./disptmpl.h ./lber.h ./ldap.h ./ldap-
extension.h
./ldap-platform.h ./ldap-to-be-deprecated.h ./ldap-deprecated.h  ./
ldap_ssl.h ./ldappr.h ./ldif.h ./iutil.h ./srchpref.h ../../../../dist/
public/ldap
/usr/bin/nsinstall -R  -m 644 ./../libraries/libldap/ldap-int.h ./../
libraries/liblber/lber-int.h ./portable.h ./ldaprot.h ./
ldaplog.h ../../../../dist/public/ldap-private
make[1]: Leaving directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/include'
cd libraries; make BUILD_DEBUG=full export
make[1]: Entering directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries'
cd liblber; make BUILD_DEBUG=full export
make[2]: Entering directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries/liblber'
/usr/bin/nsinstall -R -m 444 ./libnslber32v60.a ../../../../../dist/
lib
make[2]: Leaving directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries/liblber'
cd libldif; make BUILD_DEBUG=full export
make[2]: Entering directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries/libldif'
/usr/bin/nsinstall -R -m 444 ./libnsldif32v60.a ../../../../../dist/
lib
/usr/bin/nsinstall -R -m 444 ./libnsldif32v60.a ../../../../../dist/
lib
/usr/bin/nsinstall -R -m 444 ./libnsldif32v60.so ../../../../../dist/
lib
/usr/bin/nsinstall -R -m 444 ./libnsldif32v60.so ../../../../../dist/
bin
make[2]: Leaving directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries/libldif'
cd libiutil; make BUILD_DEBUG=full export
make[2]: Entering directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries/libiutil'
/usr/bin/nsinstall -R -m 444 ./libnsiutil32v60.a ../../../../../dist/
lib
make[2]: Leaving directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries/libiutil'
cd libldap; make BUILD_DEBUG=full export
make[2]: Entering directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries/libldap'
======= making ./libnsldap32v60.so
gcc -shared -Wl,--export-all-symbols -Wl,--out-implib -
Wl,libnsldap32v60.a   -o libnsldap32v60.so ./abandon.o ./add.o ./
authzidctrl.o ./bind.o ./cache.o ./charray.o ./charset.o ./compare.o ./
compat.o ./control.o ./countvalues.o ./delete.o ./disptmpl.o ./
dsparse.o ./error.o ./extendop.o ./free.o ./freevalues.o ./
friendly.o ./getattr.o ./getdn.o ./getdxbyname.o ./
geteffectiverightsctrl.o ./getentry.o ./getfilter.o ./getoption.o ./
getvalues.o ./memcache.o ./message.o ./modify.o./open.o ./os-ip.o ./
proxyauthctrl.o ./psearch.o ./pwmodext.o ./pwpctrl.o ./referral.o ./
regex.o ./rename.o ./request.o ./reslist.o ./result.o ./saslbind.o ./
sbind.o ./search.o ./setoption.o ./sort.o ./sortctrl.o ./srchpref.o ./
tmplout.o ./ufn.o ./unbind.o ./unescape.o ./url.o ./userstatusctrl.o ./
utf8.o ./vlistctrl.o./whoami.o ./dllmain.o ./mozock.o   -
L../../../../../dist/lib -lnslber32v60./os-ip.o: In function
`nsldapi_try_each_host':
/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/6.0.6/mozilla/directory/c-sdk/
ldap/libraries/libldap/os-ip.c:595: undefined reference to
`_gethostbyname_r'
Creating library file: libnsldap32v60.a
collect2: ld returned 1 exit status
make[2]: *** [libnsldap32v60.so] Error 1
make[2]: Leaving directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries/libldap'
make[1]: *** [export] Error 2
make[1]: Leaving directory `/cygdrive/d/SYMPHONY/mozilla_ldap_c_sdk/
6.0.6/mozilla/directory/c-sdk/ldap/libraries'
make: *** [export] Error 2

ERROR is at line "os-ip.c:595: undefined reference to
`_gethostbyname_r'".
As per the code of os-ip.c (at line 595), there is a macro defined
that mapped to “gethostbyname_r'” (But no ‘_’ symbol  mentioned in
macro definition whereas in error the name reported as
_gethostbyname_r').

Sample os-ip.c code:
------------------------
#ifdef GETHOSTBYNAME_R_RETURNS_INT
(void)GETHOSTBYNAME( host, &hent, hbuf,sizeof(hbuf), &hp, &err );
#else
hp = GETHOSTBYNAME( host, &hent, hbuf, sizeof(hbuf), &err );
#endif
if ( hp != NULL ) {
               addrlist = hp->h_addr_list;
                 }
}

Sample .h file code:
------------------------
typedef char GETHOSTBYNAME_buf_t [NSLDAPI_NETDB_BUF_SIZE];
#define GETHOSTBYNAME_BUF_T GETHOSTBYNAME_buf_t
#define GETHOSTBYNAME( n, r, b, l, rp, e )  gethostbyname_r( n, r, b,
l, rp, e )
#define GETHOSTBYNAME_R_RETURNS_INT
#else
typedef char GETHOSTBYNAME_buf_t [NSLDAPI_NETDB_BUF_SIZE];
#define GETHOSTBYNAME_BUF_T GETHOSTBYNAME_buf_t
#define GETHOSTBYNAME( n, r, b, l, e )  gethostbyname_r( n, r, b, l,
e )
#endif

Please suggest on same if I am missing anything.

I've never tried using gcc on Windows. I suspect you are going to have to add -lgcc or something like that to the link line.


Regards,
Ashwani Saxena
_______________________________________________
dev-tech-ldap mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-ldap

Reply via email to