https://bugs.openldap.org/show_bug.cgi?id=9226

            Bug ID: 9226
           Summary: MinGW build fails to link rewrite program with
                    --enable-dynamic
           Product: OpenLDAP
           Version: 2.5
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: ---
         Component: build
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

/bin/sh ../../libtool --mode=link cc  -g -O2     -o rewrite rewrite.o parse.o
librewrite.a ../../libraries/libldap_r/libldap_r.la
../../libraries/liblber/liblber.la ../../libraries/liblutil/liblutil.a     
-lregex  -lws2_32
libtool: link: cc -g -O2 -o .libs/rewrite rewrite.o parse.o  librewrite.a
../../libraries/libldap_r/.libs/libldap_r.dll.a
/home/ryan/openldap/libraries/liblber/.libs/liblber.dll.a
../../libraries/liblber/.libs/liblber.dll.a ../../libraries/liblutil/liblutil.a
-lregex -lws2_32 -L/mingw64/lib
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
../../libraries/liblutil/liblutil.a(utils.o): in function `lutil_str2bin':
C:\msys64\home\ryan\openldap\libraries\liblutil/utils.c:933: undefined
reference to `__imp_ber_memfree_x'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:\msys64\home\ryan\openldap\libraries\liblutil/utils.c:887: undefined
reference to `__imp_ber_memalloc_x'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [Makefile:292: rewrite] Error 1


I think this is caused by the order of libraries on the link line. MinGW's
import libraries (.dll.a) behave like static libraries with one .o per
function, so liblutil.a should come before liblber.dll.a. I guess it doesn't
occur on UNIX because the shared libraries are scanned differently. It doesn't
occur with static linking because entire objects are linked and
liblber.a/memory.o is already pulled in by libldap.

N.B.: RE24 with --enable-dynamic fails to link liblber; the error looks
superficially similar but it is not the same. RE24's issue is a libtool bug,
already fixed in master by upgrading libtool.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to