0

I'm working on configuring CodeBlocks to compile Windows binaries on my Linux machine. I've been working on meticulously setting up all of the project build options, and I know I'm getting close. (Yeh, I've got a different, but marginally related, question with the same opening line on here, just a heads up.)

Here's my problem: When compiling my code for Windows x64 (64-bit), I am receiving the following error, in short:

/home/jason/Code/Repositories/infiltrator-git/main.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
 #include <glibmm.h>
 ^

Here is my full, verbose build output.

-------------- Clean: DebugWin64 in infiltrator (compiler: MinGW)---------------

Cleaned "infiltrator - DebugWin64"

-------------- Build: DebugWin64 in infiltrator (compiler: MinGW)---------------

i686-w64-mingw32-g++ -Wall -std=c++11 -Wall -g -m64 -pthread -I/usr/include/gtkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include -I/usr/include/atkmm-1.6 -I/usr/include/gtk-3.0/unix-print -I/usr/include/gdkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include -I/usr/include/giomm-2.4 -I/usr/lib/x86_64-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/mirclient -I/usr/include/mircommon -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/cairomm-1.0 -I/usr/lib/x86_64-linux-gnu/cairomm-1.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/x86_64-linux-gnu -v -DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -DSTRICT -DHAVE_W32API_H -D__WXMSW__ -D__WINDOWS__ -DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -DSTRICT -DHAVE_W32API_H -D__WXMSW__ -D__WINDOWS__ -Iinclude -I/usr/x86_64-w64-mingw32/include -I/usr/x86_64-w64-mingw32/include -c /home/jason/Code/Repositories/infiltrator-git/main.cpp -o obj/Debug/Winx64/main.o
Using built-in specs.
COLLECT_GCC=i686-w64-mingw32-g++
Target: i686-w64-mingw32
Configured with: ../../src/configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/include' --mandir='/usr/share/man' --infodir='/usr/share/info' --sysconfdir=/etc --localstatedir=/var --libexecdir='/usr/lib/gcc-mingw-w64' --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --enable-shared --enable-static --disable-multilib --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --libdir=/usr/lib --enable-libstdcxx-time=yes --with-tune=generic --enable-version-specific-runtime-libs --enable-fully-dynamic-string --enable-libgomp --enable-languages=c,c++,fortran,objc,obj-c++ --enable-lto --with-plugin-ld --enable-threads=win32 --program-suffix=-win32 --program-prefix=i686-w64-mingw32- --target=i686-w64-mingw32 --with-as=/usr/bin/i686-w64-mingw32-as --with-ld=/usr/bin/i686-w64-mingw32-ld
Thread model: win32
gcc version 4.9.2 (GCC) 
COLLECT_GCC_OPTIONS='-std=c++11' '-Wall' '-g' '-m64' '-pthread' '-I' '/usr/include/gtkmm-3.0' '-I' '/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include' '-I' '/usr/include/atkmm-1.6' '-I' '/usr/include/gtk-3.0/unix-print' '-I' '/usr/include/gdkmm-3.0' '-I' '/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include' '-I' '/usr/include/giomm-2.4' '-I' '/usr/lib/x86_64-linux-gnu/giomm-2.4/include' '-I' '/usr/include/pangomm-1.4' '-I' '/usr/lib/x86_64-linux-gnu/pangomm-1.4/include' '-I' '/usr/include/glibmm-2.4' '-I' '/usr/lib/x86_64-linux-gnu/glibmm-2.4/include' '-I' '/usr/include/gtk-3.0' '-I' '/usr/include/at-spi2-atk/2.0' '-I' '/usr/include/at-spi-2.0' '-I' '/usr/include/dbus-1.0' '-I' '/usr/lib/x86_64-linux-gnu/dbus-1.0/include' '-I' '/usr/include/gtk-3.0' '-I' '/usr/include/gio-unix-2.0/' '-I' '/usr/include/mirclient' '-I' '/usr/include/mircommon' '-I' '/usr/include/cairo' '-I' '/usr/include/pango-1.0' '-I' '/usr/include/harfbuzz' '-I' '/usr/include/pango-1.0' '-I' '/usr/include/atk-1.0' '-I' '/usr/include/cairo' '-I' '/usr/include/cairomm-1.0' '-I' '/usr/lib/x86_64-linux-gnu/cairomm-1.0/include' '-I' '/usr/include/cairo' '-I' '/usr/include/pixman-1' '-I' '/usr/include/freetype2' '-I' '/usr/include/libpng12' '-I' '/usr/include/sigc++-2.0' '-I' '/usr/lib/x86_64-linux-gnu/sigc++-2.0/include' '-I' '/usr/include/gdk-pixbuf-2.0' '-I' '/usr/include/libpng12' '-I' '/usr/include/glib-2.0' '-I' '/usr/lib/x86_64-linux-gnu/glib-2.0/include' '-I' '/usr/include/x86_64-linux-gnu' '-v' '-D' 'WINVER=0x0400' '-D' '__WIN95__' '-D' '__GNUWIN32__' '-D' 'STRICT' '-D' 'HAVE_W32API_H' '-D' '__WXMSW__' '-D' '__WINDOWS__' '-D' 'WINVER=0x0400' '-D' '__WIN95__' '-D' '__GNUWIN32__' '-D' 'STRICT' '-D' 'HAVE_W32API_H' '-D' '__WXMSW__' '-D' '__WINDOWS__' '-I' 'include' '-I' '/usr/x86_64-w64-mingw32/include' '-I' '/usr/x86_64-w64-mingw32/include' '-c' '-o' 'obj/Debug/Winx64/main.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/i686-w64-mingw32/4.9-win32/cc1plus -quiet -v -I /usr/include/gtkmm-3.0 -I /usr/lib/x86_64-linux-gnu/gtkmm-3.0/include -I /usr/include/atkmm-1.6 -I /usr/include/gtk-3.0/unix-print -I /usr/include/gdkmm-3.0 -I /usr/lib/x86_64-linux-gnu/gdkmm-3.0/include -I /usr/include/giomm-2.4 -I /usr/lib/x86_64-linux-gnu/giomm-2.4/include -I /usr/include/pangomm-1.4 -I /usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I /usr/include/glibmm-2.4 -I /usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I /usr/include/gtk-3.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib/x86_64-linux-gnu/dbus-1.0/include -I /usr/include/gtk-3.0 -I /usr/include/gio-unix-2.0/ -I /usr/include/mirclient -I /usr/include/mircommon -I /usr/include/cairo -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/pango-1.0 -I /usr/include/atk-1.0 -I /usr/include/cairo -I /usr/include/cairomm-1.0 -I /usr/lib/x86_64-linux-gnu/cairomm-1.0/include -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/freetype2 -I /usr/include/libpng12 -I /usr/include/sigc++-2.0 -I /usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/libpng12 -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/x86_64-linux-gnu -I include -I /usr/x86_64-w64-mingw32/include -I /usr/x86_64-w64-mingw32/include -imultilib . -D_REENTRANT -U_REENTRANT -D WINVER=0x0400 -D __WIN95__ -D __GNUWIN32__ -D STRICT -D HAVE_W32API_H -D __WXMSW__ -D __WINDOWS__ -D WINVER=0x0400 -D __WIN95__ -D __GNUWIN32__ -D STRICT -D HAVE_W32API_H -D __WXMSW__ -D __WINDOWS__ /home/jason/Code/Repositories/infiltrator-git/main.cpp -quiet -dumpbase main.cpp -m64 -mtune=generic -march=x86-64 -auxbase-strip obj/Debug/Winx64/main.o -g -Wall -std=c++11 -version -o /tmp/cciELoJN.s
GNU C++ (GCC) version 4.9.2 (i686-w64-mingw32)
    compiled by GNU C version 4.9.2, GMP version 6.0.0, MPFR version 3.1.2-p11, MPC version 1.0.3
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/lib/gcc/i686-w64-mingw32/4.9-win32/../../../../i686-w64-mingw32/sys-include"
ignoring duplicate directory "/usr/include/gtk-3.0"
ignoring duplicate directory "/usr/include/pango-1.0"
ignoring duplicate directory "/usr/include/cairo"
ignoring duplicate directory "/usr/include/cairo"
ignoring duplicate directory "/usr/include/libpng12"
ignoring duplicate directory "/usr/x86_64-w64-mingw32/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/gtkmm-3.0
 /usr/lib/x86_64-linux-gnu/gtkmm-3.0/include
 /usr/include/atkmm-1.6
 /usr/include/gtk-3.0/unix-print
 /usr/include/gdkmm-3.0
 /usr/lib/x86_64-linux-gnu/gdkmm-3.0/include
 /usr/include/giomm-2.4
 /usr/lib/x86_64-linux-gnu/giomm-2.4/include
 /usr/include/pangomm-1.4
 /usr/lib/x86_64-linux-gnu/pangomm-1.4/include
 /usr/include/glibmm-2.4
 /usr/lib/x86_64-linux-gnu/glibmm-2.4/include
 /usr/include/gtk-3.0
 /usr/include/at-spi2-atk/2.0
 /usr/include/at-spi-2.0
 /usr/include/dbus-1.0
 /usr/lib/x86_64-linux-gnu/dbus-1.0/include
 /usr/include/gio-unix-2.0/
 /usr/include/mirclient
 /usr/include/mircommon
 /usr/include/cairo
 /usr/include/pango-1.0
 /usr/include/harfbuzz
 /usr/include/atk-1.0
 /usr/include/cairomm-1.0
 /usr/lib/x86_64-linux-gnu/cairomm-1.0/include
 /usr/include/pixman-1
 /usr/include/freetype2
 /usr/include/libpng12
 /usr/include/sigc++-2.0
 /usr/lib/x86_64-linux-gnu/sigc++-2.0/include
 /usr/include/gdk-pixbuf-2.0
 /usr/include/glib-2.0
 /usr/lib/x86_64-linux-gnu/glib-2.0/include
 /usr/include/x86_64-linux-gnu
 include
 /usr/x86_64-w64-mingw32/include
 /usr/lib/gcc/i686-w64-mingw32/4.9-win32/include/c++
 /usr/lib/gcc/i686-w64-mingw32/4.9-win32/include/c++/i686-w64-mingw32/.
 /usr/lib/gcc/i686-w64-mingw32/4.9-win32/include/c++/backward
 /usr/lib/gcc/i686-w64-mingw32/4.9-win32/include
 /usr/lib/gcc/i686-w64-mingw32/4.9-win32/include-fixed
 /usr/lib/gcc/i686-w64-mingw32/4.9-win32/../../../../i686-w64-mingw32/include
End of search list.
/home/jason/Code/Repositories/infiltrator-git/main.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
 #include <glibmm.h>
 ^
GNU C++ (GCC) version 4.9.2 (i686-w64-mingw32)
    compiled by GNU C version 4.9.2, GMP version 6.0.0, MPFR version 3.1.2-p11, MPC version 1.0.3
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))

Specs: Ubuntu 15.04 64-bit, C++, CodeBlocks 13.12, MinGW I'm using gtkmm in this project as well.

How do I fix this and get the code compiling?

CodeMouse92
  • 6,840
  • 14
  • 73
  • 130
  • 2
    `GNU C++ (GCC) version 4.9.2 (i686-w64-mingw32)` Suggests you are running a 32bit compiler and generating 64bit code. Could be some incompatibilities (although it should cross compile). I'd try using a 64 bit version like x86_64-w64-mingw32 – Michael Petch Aug 29 '15 at 23:53
  • Although not a duplicate I discovered this regarding building on windows natively, but I suspect it is a similar issue cross compiling from linux as well. http://stackoverflow.com/questions/17988904/compile-64-bit-binary-with-mingw-dev-c – Michael Petch Aug 29 '15 at 23:56
  • MichaelPetch, while I see your point, Synaptic specifies this for building for 64-bit versions of Windows, so I know it is the correct one. – CodeMouse92 Aug 30 '15 at 00:14
  • The descriptions for packages on Synaptic may not always match reality. – Michael Petch Aug 30 '15 at 00:17
  • 1
    Something else that is an issue is that it doesn't appear you have a cross compiled version of gtkmm? You can't use gtkmm libraries and headers from your linux distro to cross compile. You will need to cross compile gtkmm and its dependencies and install them into the /usr/x86_64-w64-mingw32/include and /usr/x86_64-w64-mingw32/lib directories. The other alternative is to find a pre-built mingw (64 bit in your case) version of gtkmm and manually copy the lib and include directories to the places listed above. – Michael Petch Aug 30 '15 at 00:58
  • @JasonMc92 The `i686-` prefix indicates that it generates executables targeting 32-bit platform (even though the compiler runs in 64-bit windows). – M.M Aug 30 '15 at 01:27
  • @MichaelPetch, welp, that confirms the answer on my other question (http://stackoverflow.com/q/32291704/472647). Feel free to post the info as an answer, plus anything additional to help me get started rectifying this. Meanwhile, I'm going to go play Minecraft before I punch out my computer. – CodeMouse92 Aug 30 '15 at 01:35
  • @MattMcNabb, thanks for confirming the other half of THIS answer. Problem is, I can't find the executables for the #&$^@ 64-bit MinGW. – CodeMouse92 Aug 30 '15 at 01:36
  • @JasonMc92 http://mingw-w64.org/ . Note that mingw-w64 is a fork of mingw that has come to now be the primary version of g++ for Windows; it distributes both `i686-` and `x86_64-` versions. The original mingw refused to embrace 64-bit and died. – M.M Aug 30 '15 at 01:39
  • I don't use 15.04 of Ubuntu but I believe the package names would look something like `g++-mingw-w64-x86-64` and `gcc-mingw-w64-x86-64` – Michael Petch Aug 30 '15 at 01:40
  • Looking it up it looks like you just need to install gcc-mingw-w64 and it would install both 32 and 64 bit versions. Maybe you already have it installed. Does running `x86_64-w64-mingw32-g++` yield anything? – Michael Petch Aug 30 '15 at 01:45
  • The command is valid. I put this project on hold for a few days to cool down and do something else. I'll post more when I get back to it. – CodeMouse92 Sep 03 '15 at 20:39

0 Answers0