|
From: | Mike Ladouceur |
Subject: | Re: [Qemu-devel] Compiling Qemu from Cygwin |
Date: | Mon, 21 Sep 2015 20:00:42 -0400 |
Okay, i followed the steps from the reply to my email I noticed on the website, but never made its way to my inbox. Now, I'm stuck with the following errors:/home/mike/qemu/include/glib-compat.h: At top level:/home/mike/qemu/include/glib-compat.h:145:21: error: conflicting types for ‘g_cond_signal’static inline void (g_cond_signal)(CompatGCond *cond)^In file included from /usr/x86_64-w64-mingw32/include/glib-2.0/glib/gasyncqueue.h:34:0,from /usr/x86_64-w64-mingw32/include/glib-2.0/glib.h:34,from qga/commands.c:13:/usr/x86_64-w64-mingw32/include/glib-2.0/glib/gthread.h:201:17: note: previous declaration of ‘g_cond_signal’ was herevoid g_cond_signal (GCond *cond);^In file included from /home/mike/qemu/include/qemu-common.h:25:0,from ./qga/guest-agent-core.h:14,from qga/commands.c:14:/home/mike/qemu/include/glib-compat.h: In function ‘g_cond_signal’:/home/mike/qemu/include/glib-compat.h:148:5: warning: passing argument 1 of ‘g_cond_signal’ from incompatible pointer type [enabled by default]g_cond_signal((GCond *) cond->once.retval);^/home/mike/qemu/include/glib-compat.h:145:21: note: expected ‘struct CompatGCond *’ but argument is of type ‘struct GCond *’static inline void (g_cond_signal)(CompatGCond *cond)^/home/mike/qemu/include/glib-compat.h: At top level:/home/mike/qemu/include/glib-compat.h:154:24: error: static declaration of ‘g_thread_new’ follows non-static declarationstatic inline GThread *g_thread_new(const char *name,^In file included from /usr/x86_64-w64-mingw32/include/glib-2.0/glib/gasyncqueue.h:34:0,from /usr/x86_64-w64-mingw32/include/glib-2.0/glib.h:34,from qga/commands.c:13:/usr/x86_64-w64-mingw32/include/glib-2.0/glib/gthread.h:145:17: note: previous declaration of ‘g_thread_new’ was hereGThread * g_thread_new (const gchar *name,^make: *** [qga/commands.o] Error 1On Fri, Sep 18, 2015 at 10:49 PM, Mike Ladouceur <address@hidden> wrote:I tried from Ubuntu in Virtualbox and this is the error I now get and it appears to be similar to the error from Cygwin. Configure seems to run fine. Make fails. I'm officially lost../configure --cross-prefix=x86_64-w64-mingw32(...)CC qga/commands-win32.oqga/commands-win32.c: In function ‘qmp_guest_set_user_password’:qga/commands-win32.c:1254:5: warning: passing argument 2 of ‘g_base64_decode’ from incompatible pointer type [enabled by default]rawpasswddata = (char *)g_base64_decode(password, &rawpasswdlen);^In file included from /usr/include/glib-2.0/glib.h:35:0,from qga/commands-win32.c:14:/usr/include/glib-2.0/glib/gbase64.h:52:9: note: expected ‘gsize *’ but argument is of type ‘size_t *’guchar *g_base64_decode (const gchar *text,^CC qga/channel-win32.oqga/channel-win32.c: In function ‘ga_channel_create_watch’:qga/channel-win32.c:199:24: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]watch->pollfd.fd = (gintptr) c->rstate.ov.hEvent;^qga/channel-win32.c: At top level:qga/channel-win32.c:205:11: error: conflicting types for ‘ga_channel_read’GIOStatus ga_channel_read(GAChannel *c, char *buf, size_t size, gsize *count)^In file included from qga/channel-win32.c:9:0:./qga/channel.h:30:11: note: previous declaration of ‘ga_channel_read’ was hereGIOStatus ga_channel_read(GAChannel *c, gchar *buf, gsize size, gsize *count);^qga/channel-win32.c:269:11: error: conflicting types for ‘ga_channel_write_all’GIOStatus ga_channel_write_all(GAChannel *c, const char *buf, size_t size)^In file included from qga/channel-win32.c:9:0:./qga/channel.h:31:11: note: previous declaration of ‘ga_channel_write_all’ was hereGIOStatus ga_channel_write_all(GAChannel *c, const gchar *buf, gsize size);^qga/channel-win32.c: In function ‘ga_channel_open’:qga/channel-win32.c:291:19: error: ‘MAXPATHLEN’ undeclared (first use in this function)gchar newpath[MAXPATHLEN] = {0};^qga/channel-win32.c:291:19: note: each undeclared identifier is reported only once for each function it appears inqga/channel-win32.c:291:11: warning: unused variable ‘newpath’ [-Wunused-variable]gchar newpath[MAXPATHLEN] = {0};^make: *** [qga/channel-win32.o] Error 1On Wed, Sep 16, 2015 at 1:51 PM, Mike Ladouceur <address@hidden> wrote:Thanks for the reply. I will try to cross-compile via cygwin seeing as I've had no luck installing and configuring mingw64.On Tue, Sep 15, 2015 at 4:44 PM, Eric Blake <address@hidden> wrote:On 09/15/2015 02:10 PM, Stefan Weil wrote:
>>
>> CC qga/commands-win32.o
>>> qga/commands-win32.c: In function ‘qmp_guest_set_user_password’:
>>> qga/commands-win32.c:1254:55: warning: passing argument 2 of
>>> ‘g_base64_decode’ from incompatible pointer type
>>> rawpasswddata = (char *)g_base64_decode(password, &rawpasswdlen);
>>> ^
Ugh. Compiling for cygwin should favor POSIX interfaces, not
commands-win32. The build is failing because it isn't even correctly
deciding which files it should be compiling.
> compiling with cygwin is unsupported. I suggest using MinGW-w64
> (which also works for cross compilations under Linux).
Remember, cygwin is itself an emulation layer - you are emulating POSIX
interfaces on top of Windows; which, while making the environment easier
to port to, also makes the environment slower. qemu targets mingw and
not cygwin because qemu is an emulator and already slow enough, without
needing another layer of emulation thrown in the mix.
That said, if you want to port qemu to cygwin and supply patches, I'm
more than willing to help review them. It's just that right now, it's
not my personal itch to write such patches, and that the qemu community
currently favors mingw rather than cygwin.
Also, cygwin comes with cross-compilers, so you can still use your
cygwin setup to compile qemu for mingw (although doing the cross-compile
on a true Linux box will be faster).
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[Prev in Thread] | Current Thread | [Next in Thread] |