psycha0s / airwave

Airwave is a WINE-based VST bridge, that allows for the use of Windows 32- and 64-bit VST 2.4 audio plugins with Linux VST hosts
MIT License
572 stars 35 forks source link

Compilation issue #83

Open jarkkojs opened 6 years ago

jarkkojs commented 6 years ago

Linking phase fails for airwave-host-32 when compiling on 64-bit host:

[ 31%] Linking CXX executable airwave-host-32
ld: Relocatable linking with relocations from format elf64-x86-64 (/usr/lib/x86_64-linux-gnu/wine/libwinecrt0.a(exe_entry.o)) to format elf32-i386 (airwave-host-32.UvL9Pj.o) is not supported
winebuild: ld failed with status 1
winegcc: /usr/lib/wine/winebuild failed
src/host/CMakeFiles/airwave-host-32.dir/build.make:250: recipe for target 'src/host/airwave-host-32' failed
make[2]: *** [src/host/airwave-host-32] Error 2
CMakeFiles/Makefile2:142: recipe for target 'src/host/CMakeFiles/airwave-host-32.dir/all' failed
make[1]: *** [src/host/CMakeFiles/airwave-host-32.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

Some other issue I found that I was able to workaround:

jarkkojs commented 6 years ago

PS. Friendly suggestion: use snap and/or FlatPak for packaging. Would be a better fit for this project than deb because of a proprietary dependency.

anemal commented 6 years ago

Same problem on gentoo. (I assume you use ubuntu according to your link). I believe the problem is that it is trying to link 64 bit to 32 bit wine libs. Probably a solution is to set the LDFLAGS correctly to the new location of wine. (something like /usr/lib/$(WINETARGET), /usr/lib32/$(WINETARGET), /usr/lib64/$(WINETARGET)). Since I'm not a programmer, I would need help to patch the source/Makefile. At least I didn't find any LDFLAGS in the Makefile generated by cmake. You have an idea?

Edit: I found by manually setting symlinks /usr/lib32/libwine.so -> wine-vanilla-2.0.3/libwine.so /usr/lib32/libwine.so.1 -> wine-vanilla-2.0.3/libwine.so.1 /usr/lib32/libwine.so.1.0 -> wine-vanilla-2.0.3/libwine.so.1.0 /usr/lib32/wine -> wine-vanilla-2.0.3/wine/ /usr/lib64/libwine.so -> wine-vanilla-2.0.3/libwine.so /usr/lib64/libwine.so.1 -> wine-vanilla-2.0.3/libwine.so.1 /usr/lib64/libwine.so.1.0 -> wine-vanilla-2.0.3/libwine.so.1.0 /usr/lib64/wine -> wine-vanilla-2.0.3/wine/ the build works.