As part of my cross-platform project I'm building a shared object. This shared object depends on various libraries from the ICU project (http://www.icu-project.org
). To distill the problem I'm having, I'll focus on just one of the ICU libraries.
In Makefile.am I have
libforxxq_la_LDFLAGS = -version-info $(LIBFORXXQ_VERSION) -rpath $(libdir) -no-undefined
libforxxq_la_LIBADD = -L/usr/local/lib -lcygicuuc42
In /usr/local/lib I have:
I really want libtool to create a DLL, but it won't. Here's what libtool says every time:
*** Warning: linker path does not have real file for library -lcygicuuc42.
*** I have the capability to make that library automatically link in when
*** you link to this library. But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libcygicuuc42 but no candidates were found. (...for file magic test)
And it repeats this message for every ICU library, and then proceeds to link my library statically. If I put the fully qualified name of /usr/local/lib/cygicuuc42.dll in the LIBADD line, then libtool ignores the library completely and complains about all the undefined symbols that live in the library that it just ignored.
Also, when I create an executable in the same project that depends on ICU libraries, and I pass exactly the same linker flags, "-L/usr/local/lib -lcygicuuc42", then it works fine. So, one may be tempted to complain that the name of the library doesn't start with "lib", but obviously the linker doesn't care.
I'm using libtool 2.2.6a.
Thanks for any help,Will