This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
Re: Unable to build setup.exe: undefined reference to `_IID_IPersistFile'
On 11/8/2010 7:45 AM, Andy Koppe wrote:
> On 8 November 2010 12:29, Ken Brown wrote:
>> You can see 'g++-3 -mno-cygwin' in the link command that I
>> quoted in my original post.
You're right. Sorry for the confusion.
>> There must be some other reason that
>> /usr/lib/libuuid.a is used.
>>
>
> It's due to a name clash between the unrelated libuuid and UUID.DLL.
> It's aiming for /usr/lib/w32api/libuuid.a rather than
> /usr/lib/libuuid.a. The workaround is to uninstall libuuid-devel. See
> also http://www.cygwin.com/ml/cygwin/2010-06/msg00601.html.
...and Andy's correct. This is a (long-standing) problem with the
-mno-cygwin mode: it tends to "mix" cygwin libs in /usr/lib and the
"native" ones in /usr/lib/w32api/ together (which is very bad). The
cross compiler setups do not have this problem (but, AFAIK, the
mingw64-* based cross compilers aren't official supported for building
setup.exe...which means we(*) need to get off the stick and publish a
mingw.org-based cross compiler soon).
If you want to use gcc-3, then the two workarounds are, as Andy
suggests, to uninstall libuuid-devel, or to modify the
Makefile[|.in|.am] that specifies -luuid and explicitly refer to
/usr/lib/w32api/libuuid.a instead.
(*) For various values of "we".
--
Chuck