[Jack-Devel] About cross-compilation of jack2 in MXE and libportaudio

Tim Mayberry mojofunk at gmail.com
Fri Jun 19 01:54:50 CEST 2015


Hi Harry,

On Fri, Jun 19, 2015 at 12:16 AM, Harry Nakos <xnakos at gmail.com> wrote:

> Hi, guys!
>
> I recently committed the entry for jack2 to the MXE cross-compiler,
> specifically version 1.9.10. One notable thing was needed and that was
> linking to flac, vorbis, vorbisenc, and ogg, dependencies that libsndfile
> had (needed for static linking). Timothy Gu of MXE suggested that a recent
> commit in jack2 utilised pkg-config for libsndfile and that would eliminate
> the need of my not-so-pretty hack. Anyway, this is not the main reason for
> this message. But any general points about cross-compilation of jack2 and
> required/suggested libraries would be nice. The main reason is portaudio.
>
> After building jack2 in MXE, I saw this in my log:
>
> + install
> /home/xnakos/Projects/mxe/usr/i686-w64-mingw32.shared/lib/libportaudio.dll.a
> (from build/windows/libportaudio.dll.a)
>

I believe this is the import library for the jack_portaudio.dll which are
not necessary as these are internal jack modules. The target names in the
wscript files should probably be changed(prefixed or something) to avoid
this situation but I'm not sure what other issues that would introduce atm,
possibly none.


> This resulted in portaudio library, which was already built in MXE as a
> requirement for jack2, to be overwritten. I am not quite sure I understand
> the reasons for this. So I would really enjoy an explanation! In practice,
> when trying to cross-compile Hydrogen drum machine, this overwrite would
> result in linking errors such as:
>
> CMakeFiles/hydrogen-core-0.9.7.dir/objects.a(portaudio_driver.cpp.obj): In
> function `ZN6H2Core15PortAudioDriver10disconnectEv':
> portaudio_driver.cpp:107: undefined reference to `Pa_StopStream'
> portaudio_driver.cpp:114: undefined reference to `Pa_CloseStream'
> portaudio_driver.cpp:121: undefined reference to `Pa_Terminate'
> portaudio_driver.cpp:111: undefined reference to `Pa_GetErrorText'
> portaudio_driver.cpp:118: undefined reference to `Pa_GetErrorText'
> CMakeFiles/hydrogen-core-0.9.7.dir/objects.a(portaudio_driver.cpp.obj): In
> function `ZN6H2Core15PortAudioDriver7connectEv':
> portaudio_driver.cpp:71: undefined reference to `Pa_Initialize'
> portaudio_driver.cpp:75: undefined reference to `Pa_GetErrorText'
> portaudio_driver.cpp:87: undefined reference to `Pa_OpenDefaultStream'
> portaudio_driver.cpp:91: undefined reference to `Pa_GetErrorText'
> portaudio_driver.cpp:95: undefined reference to `Pa_StartStream'
> portaudio_driver.cpp:99: undefined reference to `Pa_GetErrorText'
>
> These errors are not present when linking to the original portaudio
> library. Any information would be great, because I am definitely missing a
> lot.
>

I just remove that file from the package so there is no conflict, for
example:


https://github.com/mojofunk/MINGW-packages/blob/newpkgs/mingw-w64-jack/PKGBUILD
or
https://github.com/mojofunk/fedora-mingw-ardour/blob/master/SPECS/mingw-jack-audio-connection-kit.spec

At least I hope I'm on the right track and that solves your problem.

Tim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.linuxaudio.org/archives/jackaudio/attachments/20150619/f1927bcd/attachment.html>


More information about the Jackaudio mailing list