[libvirt] Re: libvirt on mingw: undefined reference to htonl/ntohl

Brecht Sanders brecht at sanders.org
Wed Jun 18 19:52:12 UTC 2008


Hello again,
I may have been a bit to fast quick with my mail.
Now I was able to compile and link libvirt-0.4.3 (except for the tests 
which depend on fork e.a.).
The htonl/ntohl prbem mentioned earliers was fixed by inserting 
"#include <winsock2.h>" into qemud/remote_protocol.c.
I also had errors about fprintf in proxy/libvirt_proxy.c which were 
fixed by inserting "#include <stdio.h>".
Previously I had already discovered src/internal.h needs "#include 
<pthread.h>".
As for make install, I had to comment out the "chmod u+s" line in 
proxy/Makefile, because win32 doesn't support this.
Finally I had an error because config.stat could not be found. I 
resolved this with "ln -s config.status config.stat".
Now it's built I guess the next logical step would be testing.
It's a shame though the tests won't compile.
Any chance they could be rewritten using pthreads instead of fork?
Regards
    Brecht Sanders

Brecht Sanders wrote:
> Hi,
> Some time passed by and I thought I'd have another go at compiling 
> libvirt for win32 using MinGW/MSYS again.
> I tried to compile libvirt-0.4.3 and I got around most obstacles. Now 
> it just seems I am stuck when it is trying to link.
> My search on google showed me that I am not the first one to see this 
> issue.
> Usually i means -lws2_32 is in the wrong place. However I tried moving 
> it around without luck.
> Also it doesn't make sense to me that only htonl and ntohl are 
> missing. It appears anything else used from the winsock library is 
> found during linking.
> I feel we're very close to getting libvirt compiled on win32. Or do 
> you know if anyone already succeeded?
> Regards
>    Brecht Sanders
>
> gcc -shared  .libs/libvirt_la-libvirt.o .libs/libvirt_la-memory.o 
> .libs/libvirt_la-hash.o .libs/libvirt_la-test.o .libs/libvirt_la-buf.o 
> .libs/libvirt_la-qparams.o .libs/libvirt_la-capabilities.o 
> .libs/libvirt_la-xml.o .libs/libvirt_la-event.o 
> .libs/libvirt_la-xen_unified.o .libs/libvirt_la-xen_internal.o 
> .libs/libvirt_la-xs_internal.o .libs/libvirt_la-xend_internal.o 
> .libs/libvirt_la-stats_linux.o .libs/libvirt_la-sexpr.o 
> .libs/libvirt_la-virterror.o .libs/libvirt_la-proxy_internal.o 
> .libs/libvirt_la-conf.o .libs/libvirt_la-xm_internal.o 
> .libs/libvirt_la-remote_internal.o .libs/libvirt_la-bridge.o 
> .libs/libvirt_la-iptables.o .libs/libvirt_la-uuid.o 
> .libs/libvirt_la-qemu_driver.o .libs/libvirt_la-qemu_conf.o 
> .libs/libvirt_la-openvz_conf.o .libs/libvirt_la-openvz_driver.o 
> .libs/libvirt_la-lxc_driver.o .libs/libvirt_la-lxc_conf.o 
> .libs/libvirt_la-lxc_container.o .libs/libvirt_la-nodeinfo.o 
> .libs/libvirt_la-util.o .libs/libvirt_la-remote_protocol.o 
> -Wl,--whole-archive ../gnulib/lib/.libs/libgnu.a 
> -Wl,--no-whole-archive  -L/mingw/lib /mingw/lib/libxml2.dll.a 
> /mingw/lib/libgnutls.dll.a -L/home/bsanders/inst_libgcrypt-1.4.1/lib 
> -lintl -lpthread /mingw/lib/libportablexdr.dll.a -lws2_32  
> -Wl,--version-script=./libvirt_sym.version -o .libs/libvirt-0.dll 
> -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker 
> .libs/libvirt.dll.a
> Creating library file: .libs/libvirt.dll.a
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xa46): 
> undefined reference to `htonl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xa5f): 
> undefined reference to `htonl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xa78): 
> undefined reference to `htonl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xa91): 
> undefined reference to `htonl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xaaa): 
> undefined reference to `htonl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xac3): 
> more undefined references to `htonl' follow
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xc5d): 
> undefined reference to `ntohl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xc74): 
> undefined reference to `ntohl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xc8b): 
> undefined reference to `ntohl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xca2): 
> undefined reference to `ntohl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xcb9): 
> undefined reference to `ntohl'
> .libs/libvirt_la-remote_protocol.o:remote_protocol.c:(.text+0xccc): 
> more undefined references to `ntohl' follow
> collect2: ld returned 1 exit status
> make[2]: *** [libvirt.la] Error 1
> make[2]: Leaving directory `/home/bsanders/libvirt-0.4.3/src'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/home/bsanders/libvirt-0.4.3'
> make: *** [all] Error 2
>
>




More information about the libvir-list mailing list