qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Compiling Qemu from Cygwin


From: Mike Ladouceur
Subject: Re: [Qemu-devel] Compiling Qemu from Cygwin
Date: Sun, 20 Sep 2015 21:19:03 -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 here
 void            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 declaration
 static 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 here
 GThread *       g_thread_new                    (const gchar    *name,
                 ^
make: *** [qga/commands.o] Error 1


On 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.o
qga/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.o
qga/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 here
 GIOStatus 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 here
 GIOStatus 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 in
qga/channel-win32.c:291:11: warning: unused variable ‘newpath’ [-Wunused-variable]
     gchar newpath[MAXPATHLEN] = {0};
           ^
make: *** [qga/channel-win32.o] Error 1


On 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]