Menu

Error trying to build wineasio on amd64

Help
krubenast
2013-11-05
2013-11-06
  • krubenast

    krubenast - 2013-11-05

    I'm trying to build wineasio on Debian Wheezy amd64. I downloaded asio.h from Steinberg website's asio SDK.

    I'm getting this error :

    wineasio-0.9.2$ ./prepare_64bit_asio
    ./prepare_64bit_asio: 2: ./prepare_64bit_asio: Syntax error: redirection unexpected

    Please, what did i miss ?

     
  • krubenast

    krubenast - 2013-11-05

    Ok I had to change #!/bin/sh to #!/bin/bash at the begining of the script.

    But i'm getting this error later :

    wineasio-0.9.2# make clean
    rm -f y.tab.c y.tab.h lex.yy.c core .orig .rej ## ~ % .# asio.o main.o regsvr.o
    rm -f wineasio.dll.so
    root@geezer:/home/DATA/Archives/Wineasio/COMPIL/wineasio-0.9.2# make -f Makefile64
    gcc -c -I. -I/usr/include -I/usr/include -I/usr/include/wine -I/usr/include/wine/windows -g -O2 -DWINESRC -DNATIVE_INT64 -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -o asio.o asio.c
    gcc -c -I. -I/usr/include -I/usr/include -I/usr/include/wine -I/usr/include/wine/windows -g -O2 -DWINESRC -DNATIVE_INT64 -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -o main.o main.c
    gcc -c -I. -I/usr/include -I/usr/include -I/usr/include/wine -I/usr/include/wine/windows -g -O2 -DWINESRC -DNATIVE_INT64 -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -o regsvr.o regsvr.c
    winegcc -shared wineasio.dll.spec -mnocygwin -L/usr/lib/wine -L/usr/lib -o wineasio.dll.so asio.o main.o regsvr.o -ljack -lodbc32 -lole32 -lwinmm -luuid
    /usr/bin/ld: i386 architecture of input file `/usr/lib/i386-linux-gnu/wine/libuuid.a(uuid.o)' is incompatible with i386:x86-64 output
    /usr/bin/ld: Relocatable linking with relocations from format elf32-i386 (/usr/lib/i386-linux-gnu/wine/libwinecrt0.a(dll_entry.o)) to format elf64-x86-64 (wineasio.yiYjKb.o) is not supported
    winebuild: /usr/bin/ld failed with status 1
    winegcc: winebuild failed
    make: *** [wineasio.dll.so] Erreur 2

     

    Last edit: krubenast 2013-11-05
  • Joakim Hernberg

    Joakim Hernberg - 2013-11-05

    I think it's not finding the right libs to link with. Try changing /usr/lib to /usr/lib/x86_64-linux-gnu, and -L/usr/lib/wine to /usr/lib/x86_64-linux-gnu/wine in the wineasio_dll_LDFLAGS variable. This is somewhat a pain as it seems that most distros do it differently to each other...:(

     
  • krubenast

    krubenast - 2013-11-05

    Thanks a lot for your help. It still doesn't work.

    winegcc: File does not exist: /usr/lib/x86_64-linux-gnu/wine

    There is nothing about wine in /usr/lib/x86_64-linux-gnu. But there is in /usr/lib/i386-linux-gnu/wine/

    ls /usr/lib/i386-linux-gnu/wine/

    winealsa.drv.so winecfg.exe.so

    winedevice.exe.so winemapi.dll.so

    winemsibuilder.exe.so wineserver

    wine.bin wineconsole.exe.so

    winefile.exe.so winemenubuilder.exe.so

    winepath.exe.so winevdm.exe.so

    wineboot.exe.so wined3d.dll.so

    winegstreamer.dll.so winemine.exe.so

    wine-preloader winex11.drv.so

    winebrowser.exe.so winedbg.exe.so

    winejoystick.drv.so winemp3.acm.so

    wineps16.drv16.so

    So i tried replacing like this :

    wineasio_dll_LDFLAGS = -shared \

          $(wineasio_dll_MODULE:%=%.spec) \
    
          -mnocygwin \
    
          -L/usr/lib/i386-linux-gnu/wine \
    
          -L/usr/lib/i386-linux-gnu
    

    But still this error :

    /usr/bin/ld: i386 architecture of input file `/usr/lib/i386-linux-gnu/wine/libuuid.a(uuid.o)' is incompatible with i386:x86-64 output
    /usr/bin/ld: Relocatable linking with relocations from format elf32-i386 (/usr/lib/i386-linux-gnu/wine/libwinecrt0.a(dll_entry.o)) to format elf64-x86-64 (wineasio.YL4x7I.o) is not supported
    winebuild: /usr/bin/ld failed with status 1
    winegcc: winebuild failed
    make: *** [wineasio.dll.so] Erreur 2

     

    Last edit: krubenast 2013-11-05
  • Joakim Hernberg

    Joakim Hernberg - 2013-11-05

    Try /usr/lib64/wine instead? If that doesn't work you have to find out where the 64bit wine libs are, that is the path you need to add to Makefile64.

     
  • krubenast

    krubenast - 2013-11-05

    There is no /usr/lib64/wine just /usr/lib/x86_64-linux-gnu/. Actually the package wine on Debian amd64 seems just to install wine 32bits needing multiarch support for i386 being activated. I think that's the reason why the wine libs are all in /usr/lib/i386-linux-gnu/wine/. Also libwine-dev is necessary installed like a i386 package.

    Maybe i'm wrong but reading this :

    "/usr/bin/ld: cannot find -ljack

    collect2: error: ld returned 1 exit status

    Isn't ld provided by the package binutils ? It's what seems to be :

    apt-file search /usr/bin/ld

    binutils: /usr/bin/ld

    So i'm wondering if i don't need the i386 version of binutils to build wineasio as everything in wine is i386 anyway. And it's impossible to install it without deinstalling binutils amd64, that means breaking the system because of the dependencies. So i would need to make a 32 bits chroot to build a 32 bits wineasio. And i'm sceptic about the possibility to build a 64 bits version.

    For now i managed to install wineasio 0.9.0 32bits from a RPM using alien. I installed Reaper and it seems to work fine. But i don't like to give up about the 0.9.2 version, so maybe i'll try a chroot in the future or i'll wait to find a 0.9.2 RPM.

    Thanks again for your help.

     
    • Joakim Hernberg

      Joakim Hernberg - 2013-11-06

      Ah, now we are getting somewhere :) If you only have 32bit wine installed, then trying to build and use 64bit wineasio will fail. With only 32bit wine installed on a 64bit distro, what you need is the 32bit wineasio driver, 64bit jack and the additional 32bit libjack component, something like lib32-jack or so depending on the distro. And in case of debian, the dev packages of wine and jack.

      I don't think your binutils enters into the equation at all, the problem is simply that it can't find the 64bit wine component when trying to link to them, which is completely normal as you haven't installed them.

      What you have to do is edit Makefile (note not Makefile64), and point it to /usr/lib/i386-linux-gnu/ and /usr/lib/i386-linux-gnu/wine/. Then run make clean && make. That ought to build the driver. Finally to install it, just do "sudo cp wineasio.dll.so /usr/lib/i386-linux-gnu/wine/". That should be it. And since you already have an older version of wineasio up and running in your wineprefix, there is no need to run regsvr32 wineasio.dll as it's already in the register.

       

      Last edit: Joakim Hernberg 2013-11-06
  • krubenast

    krubenast - 2013-11-06

    Yes, i forgot to change the Makefile indeed. But it didn't change anything :

    /usr/bin/ld: cannot find -ljack

    collect2: error: ld returned 1 exit status

    winegcc: gcc failed

    make: *** [wineasio.dll.so] Erreur 2

    So i thought that if the problem was not binutils it was probably libjack-dev, so i fought a bit to install it in 32bits version.

    Then :

    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7

    /libgcc.a when searching for -lgcc

    /usr/bin/ld: cannot find -lgcc

    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7

    /libgcc_s.so when searching for -lgcc_s

    /usr/bin/ld: cannot find -lgcc_s

    collect2: error: ld returned 1 exit status

    winegcc: gcc failed

    make: *** [wineasio.dll.so] Erreur 2

    Installing a 32 bits version of gcc would be impossible due to dependencies. So i made the 32bits chroot i was thinking about, That is pretty easy actually using debootstrap on Debian.

    And it worked very well and fast, the compilation is done. I replaced the previous wineasio.dll.so with the 0.9.2 version and everything seems to work fine. I'm going to install it with wine and Reaper on my other Debian computer, i'm pretty confident that it will work fine too. thanks again. Regards.

     
  • Joakim Hernberg

    Joakim Hernberg - 2013-11-06

    Good. Of course I forgot to that you'd have other problems building 32bit software on a "pure" 64bit system. Happy you got it working, it's kind of hard trying to offer support for a distro which you don't know how it works.

     

Log in to post a comment.