AndreRH / hangover

Hangover runs simple Win32 applications on arm64 Linux
GNU Lesser General Public License v2.1
1.26k stars 92 forks source link

Failed to build #26

Closed ghost closed 4 years ago

ghost commented 5 years ago

Hi, I left the compiler working all day, it finished successfully on wine, but when i check the build folder a lot of things wasnt builded,like qemu, etc. so I did make again and this happened (log):

this its the hugest project Ive ever attempt to build, it includes large programs like wine, so for me its really complicated to find the proper makefile or related with that option to erase or modify. at least hope you could give me some clue. you know than I am on rpi (because of the usser log) and it will probably not work because its 32 bit os, but I want to give it a shot for low demanding games like civilization 2. maybe I had to modify something but thats another topic and you will not support that.

pi@pi:~/Desktop/hangover $ make make -C build/libiconv64/ install make[1]: se entra en el directorio '/home/pi/Desktop/hangover/build/libiconv64' cd libcharset && make install prefix='/home/pi/Desktop/hangover/build/x86_64-w64-mingw32' exec_prefix='/home/pi/Desktop/hangover/build/x86_64-w64-mingw32' libdir='/home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib' make[2]: se entra en el directorio '/home/pi/Desktop/hangover/build/libiconv64/libcharset' cd lib && make install prefix='/home/pi/Desktop/hangover/build/x86_64-w64-mingw32' exec_prefix='/home/pi/Desktop/hangover/build/x86_64-w64-mingw32' libdir='/home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib' make[3]: se entra en el directorio '/home/pi/Desktop/hangover/build/libiconv64/libcharset/lib' if test yes = no; then \ case 'mingw32' in \ darwin[56]) \ need_charset_alias=true ;; \ darwin | cygwin | mingw | pw32 | cegcc) \ need_charset_alias=false ;; \ *) \ need_charset_alias=true ;; \ esac ; \ else \ need_charset_alias=false ; \ fi ; \ /bin/sh ../../../../libiconv/libcharset/build-aux/mkinstalldirs /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib ; \ /bin/bash ../libtool --mode=install /usr/bin/install -c libcharset.la /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/libcharset.la libtool: install: /usr/bin/install -c .libs/libcharset.lai /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/libcharset.la libtool: install: /usr/bin/install -c .libs/libcharset.a /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/libcharset.a libtool: install: chmod 644 /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/libcharset.a libtool: install: ranlib /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/libcharset.a if test -f /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/charset.alias; then \ sed -f ref-add.sed /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/charset.alias > /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/t-charset.alias; \ /usr/bin/install -c -m 644 /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/t-charset.alias /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/charset.alias; \ rm -f /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/t-charset.alias; \ else \ if $need_charset_alias; then \ sed -f ref-add.sed charset.alias > /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/t-charset.alias; \ /usr/bin/install -c -m 644 /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/t-charset.alias /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/charset.alias; \ rm -f /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib/t-charset.alias; \ fi ; \ fi make[3]: se sale del directorio '/home/pi/Desktop/hangover/build/libiconv64/libcharset/lib' /bin/sh ../../../libiconv/libcharset/build-aux/mkinstalldirs /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/include /usr/bin/install -c -m 644 include/libcharset.h /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/include/libcharset.h /usr/bin/install -c -m 644 include/localcharset.h.inst /home/pi/Desktop/hangover/build/x86_64-w64-mingw32/include/localcharset.h make[2]: se sale del directorio '/home/pi/Desktop/hangover/build/libiconv64/libcharset' cd lib && make install prefix='/home/pi/Desktop/hangover/build/x86_64-w64-mingw32' exec_prefix='/home/pi/Desktop/hangover/build/x86_64-w64-mingw32' libdir='/home/pi/Desktop/hangover/build/x86_64-w64-mingw32/lib' make[2]: se entra en el directorio '/home/pi/Desktop/hangover/build/libiconv64/lib' /bin/bash ../libtool --mode=compile --tag=RC /bin/sh ../../../libiconv/lib/../windows/windres-options --escape 1.15 -i ../../../libiconv/lib/../windows/libiconv.rc -o libiconv.res.lo --output-format=coff Usage: /home/pi/Desktop/hangover/build/libiconv64/libtool [OPTION]... [MODE-ARG]... Try 'libtool --help' for more information. libtool: error: unrecognised option: '-DPACKAGE_VERSION_STRING=\"1.15\"' Makefile:93: fallo en las instrucciones para el objetivo 'libiconv.res.lo' make[2]: [libiconv.res.lo] Error 1 make[2]: se sale del directorio '/home/pi/Desktop/hangover/build/libiconv64/lib' Makefile:52: fallo en las instrucciones para el objetivo 'install' make[1]: [install] Error 2 make[1]: se sale del directorio '/home/pi/Desktop/hangover/build/libiconv64' Makefile:46: fallo en las instrucciones para el objetivo 'build/x86_64-w64-mingw32/bin/libcharset-1.dll' make: *** [build/x86_64-w64-mingw32/bin/libcharset-1.dll] Error 2

AndreRH commented 5 years ago

32-bit os is not supported, this might also be true for building

ghost commented 5 years ago

ok, I will try it on an 64 bit os capable sbc. it uses qemu, it uses just one arm core? just to close this issue

stefand commented 5 years ago

Building on a 32 bit OS should work. Something seems to go wrong with libtool, although I have no idea what might be wrong exactly. Can you try to build libiconv manually (first for your native host system, then try to make it use the mingw cross compiler)? It might shed some light.

Wrt 32 bit, it isn't really a matter of how powerful the system is. You'll run into some #ifdef guards when building the hangover libs that some assembler parts aren't implemented for your host platform. The next issue is that at runtime qemu will fail to set up the process address space in the right way.

stefand commented 5 years ago

If you have a raspberry pi 3 you actually have 64 bit hardware, and it is possible to install an arm64 OS. I am not sure about older Raspberry Pi versions though.

One other random guess: Try to set the language environment to something english. Sometimes tools try to parse localized strings. I don't think that's the case here, but it is worth a try (either 'unset LANG' or 'export LANG=en_US.UTF-8')

ghost commented 5 years ago

I understand than 32 bit and 64 bit its not about power. Just a bad expression on non native lenguage. Yes, the pi its 64 bits, But its not practical an 64 bit kernel on rpi. Anyway. I will try hangover on another sbc. Could you answer if hangover could use just one arm core on emulation?? Thanks for the reply and effort

ghost commented 5 years ago

If it can't run on multicore its not practical on rpi. I could add a cutom 64 bit kernel to switching on boot on my desktop raspbian setup. Thats how I did with wine 1g/3g custom kernel

stefand commented 5 years ago

Hangover can use multiple cores, if the application you run uses multiple threads. When the app creates a new thread we just create another emulated qemu CPU for that thread and run it. That thread will then get scheduled by the OS kernel like any other thread.

ghost commented 5 years ago

Thanks. I will close it for now. This its an amazing project.

CalcProgrammer1 commented 5 years ago

I'd suggest re-opening this issue. You may have been building on a 32-bit OS but the same build error happens on a 64-bit OS. I've seen it on a Raspberry Pi 3 running 64-bit Gentoo and now the Nintendo Switch running the recently released L4T Ubuntu (arm64 Ubuntu 18.04, Linux for Tegra). It builds wine-host just fine but fails to build x86_64-w64-mingw32 with the libtool error: unrecognized option: '-DPACKAGE_VERSION_STRING=\"1.15\"' error message.

Edit: Never mind, installed the mingw compilers and it built past this point.

ghost commented 5 years ago

@CalcProgrammer1 Would you mind telling what fixed the problem for you? which package did you install on the RPi3 and on L4T for Switch to get it working?

CalcProgrammer1 commented 5 years ago

I didn't try on the RPi again yet but on the Switch I installed mingw-w64, mingw-w64-i686-dev, mingw-w64-x86-64-dev. I had to delete the build folder and start the make over for config to pick it up, but then it built just fine. I did have to run make multiple times to get it all to build, might have been because I used -j4 (4 threads, 4 CPUs). Once make runs with no errors it's all built. I then had to link the gcc library as described in the README to get it working.

On Fri, May 3, 2019 at 11:37 PM stefan240 notifications@github.com wrote:

@CalcProgrammer1 https://github.com/CalcProgrammer1 Would you mind telling what fixed the problem for you? which package did you install on the RPi3 and on L4T for Switch to get it working?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/AndreRH/hangover/issues/26#issuecomment-489293199, or mute the thread https://github.com/notifications/unsubscribe-auth/AAIAY7DKCGEXEO66WRFGXZ3PTUHH5ANCNFSM4HBIXUBA .

ghost commented 5 years ago

I will try that. I didn't even thought of clearing the build folder. I will report back.

ghost commented 5 years ago

Your tip worked really well. I guess the issue of the op is solved by this answer. ^^ It compiled great on the switch but raspberry pi 3 still isnt done for me.

AndreRH commented 4 years ago

closing then