[pcre-dev] pcre static build on mingw32, no joy so far.

Top Page
Delete this message
Author: David Mathog
Date:  
To: pcre-dev
Subject: [pcre-dev] pcre static build on mingw32, no joy so far.
Any pointers on building and linking to a static PCRE library using
mingw? I have tried about a dozen different things and it always comes
down to some variation of this error at the point where the build
tries to link to the static library:

C:\DOCUME~1\david\LOCALS~1\Temp\ccI6Zl3a.o:extract.c:(.text+0x8b77):
undefined r
eference to `pcre_compile'
C:\DOCUME~1\david\LOCALS~1\Temp\ccI6Zl3a.o:extract.c:(.text+0xbf6b):
undefined r
eference to `pcre_compile'
C:\DOCUME~1\david\LOCALS~1\Temp\ccI6Zl3a.o:extract.c:(.text+0x21751):
undefined
reference to `pcre_exec'
C:\DOCUME~1\david\LOCALS~1\Temp\ccI6Zl3a.o:extract.c:(.text+0x29533):
undefined
reference to `pcre_compile'
collect2: ld returned 1 exit status

Starting with a freshly installed mingw with msys on XP SP3, this version:

MSYS 1.0.17(0.48/3/2) 2011-04-24 23:39 i686 unknown; targ=MINGW32
GNU bash, version 3.1.17(1)-release (i686-pc-msys); ENV=.profile
GNU Make 3.81This program built for i686-pc-msys; MAKE_MODE=unix
gcc.exe (GCC) 4.5.2; targ=MINGW32
GNU ld (GNU Binutils) 2.21

downloaded, unpacked pcre 8.12, buit it with

./configure --disable-cpp --disable-shared --enable-newline-is-anycrlf
make
make test
(first part passed, the rest failed)
make install

Seems to have built something, as these are in /usr/local/lib

-rw-r--r-- 1 david Administrators 130382 Jun  3 15:10 libpcre.a
-rw-r--r-- 1 david Administrators    866 Jun  3 15:10 libpcre.la
-rw-r--r-- 1 david Administrators   3110 Jun  3 15:10 libpcreposix.a
-rw-r--r-- 1 david Administrators    907 Jun  3 15:10 libpcreposix.la


Try to build my application (variations of the following work fine on
linux and solaris, albeit dynamic linking in both of those cases):
$ gcc -Wall -std=c99 -pedantic -lm -O3 -DMAXINFILE=20 \
-lpcre -I/usr/local/include -L/usr/local/lib \
-static -DPCRE_STATIC -o extract extract.c

and the error messages at top result. The strings appear in libpcre.a
but possibly prefixed by an underscore:

$ strings /usr/local/lib/libpcre.a | grep pcre_compile
_pcre_compile2
_pcre_compile
pcre_compile.o/ 1307138907  0     0     100666  46478     `
pcre_compile.c
_pcre_compile2
_pcre_compile


It is definitely finding libpcre.a (and libpcreposix.a if that is added
too, but it seems to make no difference) because remove -L/usr/local/lib
and the error changes to:

c:/progs/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lpcre

Any help would be greatly appreciated.

Thanks,

David Mathog
mathog@???
Manager, Sequence Analysis Facility, Biology Division, Caltech