4

I am trying to cross compile Hyperion for a 32-bit Windows on a 64-bit Debian linux, but I ran into a few problems in doing so.

First of all, in attempt to install a cross compiler, I installed mingw32 on linux. I am not sure if I installed the correct version or not since there were so much similar packages. Eventually, I locate and read a readme.txt and learn that i686-w64-mingw32-gcc is supposed to be the correct 32-bit Windows C compiler, but there were two versions of i686-w64-mingw32-gcc that might be what I am looking for: i686-w64-mingw32-gcc and i686-w64-mingw32-gcc-win32. So I chose to use i686-w64-mingw32-gcc-win32.

Next, it complaints about not being able to locate cc1plus. A locate of that file led me to /usr/lib/gcc/x86_64-linux-gnu/5/. I went ahead creating a soft link at /usr/bin to /usr/lib/gcc/x86_64-linux-gnu/5/cc1plus.

Afterward, it complaints about missing windows.h. I locate it at /usr/i686-w64-mingw32/include/. After adding -I option to that path to CFLAGS, I got various strange errors. Among them is the one below:

/usr/i686-w64-mingw32/include/_mingw.h:264:2: error: #error Only Win32 target is supported!

Now, I am stuck. I am not sure which step I did wrong. I suspect that it might be the wrong cc1plus I soft linked, but I don't know how to get the right version if that is wrong.

1 Answer 1

4

The cc1plus you linked is the normal C++ compiler's, not the Windows cross-compiler's. You should never need to fix GCC's internal components; the cc1plus error indicates something else is wrong.

In your case, you need to install mingw-w64 (apt-get install mingw-w64). This will install a C and C++ cross-compiler for Windows and the appropriate header files and libraries. Then use i686-w64-mingw32 as the target; i686-w64-mingw32-gcc should work fine. (See the README.Debian in /usr/share/doc/gcc-mingw-w64-base for details of the -win32 v. -posix stuff; the defaults should work fine for you.)

4
  • mingw-w64 is not found when using apt-get as I tried that before using the GUI Package manager. This is where I ran into problems of which packages I needed. I will try to remove the soft link to cc1plus to see if I can install the proper packages to fix that problem. Commented Dec 9, 2016 at 8:24
  • What version of Debian are you using? Commented Dec 9, 2016 at 9:15
  • If you can't install the mingw-w64 package (which suggests there's something very wrong with your apt sources — the package is present in Debian 7 and 8), you can try installing g++-mingw-w64-i686 (that's the 32-bit-only C++ cross-compiler). Commented Dec 9, 2016 at 9:19
  • Actually, I make a mistake. I should have said that I have Kali linux, a Debian-based linux, not Debian linux. Your suggestion for trying to install g++-mingw-w64-i686 makes me realized something as well. I was using the wrong compiler the whole time. I kept thinking that I need a C compiler, but in reality, the code was written in C++. After switching my compiler to i686-w64-mingw32-c++-win32, it works flawlessly. Thank you so much. I struggle with this problem for a very long time. Commented Dec 9, 2016 at 10:35

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.