[Rhythmbox-devel] building rhythmbox for win32 with MinGW/MSYS
- From: Brecht Sanders <brecht sanders org>
- To: rhythmbox-devel gnome org
- Subject: [Rhythmbox-devel] building rhythmbox for win32 with MinGW/MSYS
- Date: Sun, 08 Mar 2009 11:04:00 +0100
Hi,
I was just trying if rhythmbox can be built on Windows using the MinGW
compiler under the MSYS build environment.
I was able to build the minimum dependancies and was able to run configure.
When compiling there were some obstacles which I believe should be
possible to solve.
- The most common problem is that DATADIR is defined in both gnome and
MinGW's objidl.h. I was able to work around this by putting #include
<windows.h> as the first line on each source file that had this problem.
However the DATADIR in shell/main.c won't work then because it won't be
a string anymore.
- mkdir() only takes one parameter on Windows
- I got an undefined reference to gnome_authentication_manager_init() in
metadata/rb-metadata-dbus-service.c
- kill() doesn't exist on Windows, but it's used in
metadata/rb-metadata-dbus-client.c right before g_spawn_close_pid(), is
this necessary?
- some files include gdk/gdkx.h and use XID which doesn't exist on Windows
Anyway, after addressing all this points (admittedly sometimes in a
dirty way by commenting out some things) I was able compile everything.
However linking failed with the output below. Basically there are a lot
of undefined references. Any idea why this happens?
Regards
Brecht Sanders
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -export-dynamic
-no-undefined -o rhythmbox.exe main.o librbshell.la
../corelib/librhythmbox-core.la ../sources/libsourcesimpl.la
../podcast/librbpodcast.la ../plugins/librbplugins.la -L/mingw/lib
-lsoup-2.4 -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl
-lgstpbutils-0.10 -L/mingw/lib -ldbus-glib-1 -ldbus-1.dll -lgobject-2.0
-lglib-2.0 -lintl ../backends/librbbackends.la -L/mingw/lib
-ltotem-plparser -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0
-lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0
-lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -L/mingw/lib
-lgnomeui-2 -lbonoboui-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2
-lbonobo-activation -lORBit-2 -lart_lgpl_2 -lglade-2.0 -lgtk-win32-2.0
-lxml2 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lgdk_pixbuf-2.0
-lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo
-lgnomevfs-2 -lgconf-2 -lgthread-2.0 -lgmodule-2.0 -lgobject-2.0
-lglib-2.0 -lintl -L/mingw/lib -lgstbase-0.10 -lgstreamer-0.10
-lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lxml2 -lglib-2.0 -lintl
-lgstcontroller-0.10 -lz
gcc -g -O2 -o rhythmbox.exe main.o -Wl,--export-dynamic
./.libs/librbshell.a ../corelib/.libs/librhythmbox-core.a -L/mingw/lib
-L/home/bsanders/inst_libgcrypt-1.4.3/lib
-L/home/bsanders/inst_libgcrypt-1.4.4/lib
../sources/.libs/libsourcesimpl.a ../podcast/.libs/librbpodcast.a
../plugins/.libs/librbplugins.a /mingw/lib/libsoup-2.4.dll.a
/mingw/lib/libgnutls.dll.a /mingw/lib/libgcrypt.dll.a
/mingw/lib/libgpg-error.dll.a /mingw/lib/libdbus-glib-1.dll.a
-ldbus-1.dll ../backends/.libs/librbbackends.a
/mingw/lib/libgstpbutils-0.10.dll.a /mingw/lib/libtotem-plparser.dll.a
-lgnomeui-2 -lbonoboui-2 -lgnomecanvas-2 -lgnome-2
/mingw/lib/libpopt.dll.a -lbonobo-2 -lbonobo-activation -lORBit-2
/mingw/lib/libart_lgpl_2.dll.a -lglade-2.0 -lgtk-win32-2.0
-lgdk-win32-2.0 -latk-1.0 /mingw/lib/libgio-2.0.dll.a -lshlwapi
-lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0
-lcairo -lgnomevfs-2 -lgconf-2 /mingw/lib/libgstbase-0.10.dll.a
/mingw/lib/libgstcontroller-0.10.dll.a
/mingw/lib/libgstreamer-0.10.dll.a /mingw/lib/libxml2.dll.a -ldl
-lpthread /mingw/lib/libiconv.dll.a /mingw/lib/libgobject-2.0.dll.a
/mingw/lib/libgthread-2.0.dll.a /mingw/lib/libgmodule-2.0.dll.a
/mingw/lib/libglib-2.0.dll.a -lws2_32 -lole32 -lintl -lz -L/mingw/lib
-L/mingw/lib
main.o: In function `main':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/shell/main.c:172:
undefined reference to `gnome_authentication_manager_init'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/shell/main.c:305:
undefined reference to `gdk_x11_display_get_user_time'
./.libs/librbshell.a(rb-removable-media-manager.o): In function
`rb_removable_media_manager_cmd_eject_medium':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/shell/rb-removable-media-manager.c:567:
undefined reference to `gnome_vfs_volume_eject'
../corelib/.libs/librhythmbox-core.a(rb-cut-and-paste-code.o): In
function `rb_utf_friendly_time':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/lib/rb-cut-and-paste-code.c:263:
undefined reference to `localtime_r'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/lib/rb-cut-and-paste-code.c:264:
undefined reference to `localtime_r'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/lib/rb-cut-and-paste-code.c:276:
undefined reference to `localtime_r'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/lib/rb-cut-and-paste-code.c:292:
undefined reference to `localtime_r'
../sources/.libs/libsourcesimpl.a(rb-static-playlist-source.o): In
function `rb_static_playlist_source_do_query':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:571:
undefined reference to `rb_library_browser_set_model'
../sources/.libs/libsourcesimpl.a(rb-static-playlist-source.o): In
function `impl_reset_filters':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:466:
undefined reference to `rb_library_browser_reset'
../sources/.libs/libsourcesimpl.a(rb-static-playlist-source.o): In
function `rb_static_playlist_source_constructor':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:299:
undefined reference to `rb_library_browser_new'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:307:
undefined reference to `rb_library_browser_set_model'
../sources/.libs/libsourcesimpl.a(rb-static-playlist-source.o): In
function `impl_get_property_views':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:515:
undefined reference to `rb_library_browser_get_property_views'
../sources/.libs/libsourcesimpl.a(rb-podcast-source.o): In function
`rb_podcast_source_constructor':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:726:
undefined reference to `rb_property_view_new'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:729:
undefined reference to `rb_property_view_get_type'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:729:
undefined reference to `rb_property_view_set_selection_mode'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:733:
undefined reference to `rb_property_view_get_type'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:733:
undefined reference to `rb_property_view_get_model'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:759:
undefined reference to `rb_property_view_append_column_custom'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:785:
undefined reference to `rb_property_view_append_column_custom'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:796:
undefined reference to `rb_property_view_set_search_func'
../sources/.libs/libsourcesimpl.a(rb-podcast-source.o): In function
`rb_podcast_source_cmd_new_podcast':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:2121:
undefined reference to `rb_uri_dialog_new'
../sources/.libs/libsourcesimpl.a(rb-sourcelist.o): In function
`rb_sourcelist_init':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-sourcelist.c:803:
undefined reference to `gossip_cell_renderer_expander_new'
../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In
function `rb_auto_playlist_source_constructor':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sourcInfo: resolving
___gst_debug_min by linking to __imp____gst_debug_min (auto-import)
Info: resolving _GST_CAT_DEFAULT by linking to __imp__GST_CAT_DEFAULT
(auto-import)
Info: resolving __SOUP_URI_SCHEME_HTTP by linking to
__imp___SOUP_URI_SCHEME_HTTP (auto-import)
es/rb-auto-playlist-source.c:260: undefined reference to
`rb_library_browser_new'
../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In
function `rb_auto_playlist_source_do_query':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:747:
undefined reference to `rb_library_browser_set_model'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:773:
undefined reference to `rb_library_browser_set_model'
../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In
function `impl_reset_filters':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:476:
undefined reference to `rb_library_browser_reset'
../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In
function `rb_auto_playlist_source_set_query':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:839:
undefined reference to `rb_library_browser_set_model'
../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In
function `impl_get_property_views':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:535:
undefined reference to `rb_library_browser_get_property_views'
../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function
`rb_browser_source_cmd_choose_genre':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:577:
undefined reference to `rb_library_browser_get_property_view'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:579:
undefined reference to `rb_property_view_set_selection'
../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function
`rb_browser_source_cmd_choose_artist':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:597:
undefined reference to `rb_library_browser_get_property_view'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:599:
undefined reference to `rb_property_view_set_selection'
../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function
`rb_browser_source_cmd_choose_album':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:617:
undefined reference to `rb_library_browser_get_property_view'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:619:
undefined reference to `rb_property_view_set_selection'
../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function
`rb_browser_source_constructor':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:427:
undefined reference to `rb_library_browser_new'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:515:
undefined reference to `rb_library_browser_set_model'
../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function
`rb_browser_source_do_query':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:904:
undefined reference to `rb_library_browser_set_model'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:940:
undefined reference to `rb_library_browser_set_model'
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:934:
undefined reference to `rb_library_browser_set_model'
../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function
`impl_reset_filters':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:700:
undefined reference to `rb_library_browser_reset'
../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function
`impl_get_property_views':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:688:
undefined reference to `rb_library_browser_get_property_views'
../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function
`impl_browser_toggled':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:814:
undefined reference to `rb_library_browser_reset'
collect2: ld returned 1 exit status
make[3]: *** [rhythmbox.exe] Error 1
make[3]: Leaving directory `/home/bsanders/rhythmbox-0.11.6/shell'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/bsanders/rhythmbox-0.11.6/shell'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/bsanders/rhythmbox-0.11.6'
make: *** [all] Error 2
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]